![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Такой вопрос. Есть некий файл, открывающийся при начале работы программы. Допустим он имеет определненный размер. Этот размер имеет влияние на работу программы при следующем ее, повторном запуске. Т. е. если изменится размер файла - исказятся данные, формирующиеся последующими вычислениями программы на сервере при запуске другим пользователем. Мысль такая: зафиксировать размер файла при первом сеансе работы, используя -s $name_file, а потом, при втором запуске сравнить измеренное значение с изменившимся. Если значения не равны, принимаются соответсвующие корректирующие меры. Вот как это сделать, голову сломал, не знаю. Есть ли функция, подобная операциям -s, -z, чтобы узнать, произошло ли изменение размера?
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# touch aa
# perl -le 'print -s "aa"' 0 # cat >|aa aa ^D # perl -le 'print -s "aa"' 3 не оно? |
|||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Признаться, ничего не понял. А можно как-нибудь поподробнее, с разъяснениями? (Я же только учусь
![]() Это сообщение отредактировал(а) Uran34 - 11.12.2010, 21:14 |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
тестовая функция -s file возвращает раз мер файла в байтах (perldoc -f -s)
размер файла возвращает так же функция stat (perldoc -f stat) |
|||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Да, это мне известно. Но вот в чем проблема-то. Я могу измерить размер файла, что называется,здесь и сечас, в данный момент времени согласно действию кода программы. Это значение будет мне известно. А с чем его сравнить? Как запомнить размер файла, который был до этого контрольного измерения? При выходе из программы значение переменной теряется, увы. Вот я и хочу узнать, есть ли такая функция, чтобы измерить текущий размер файла и сравнить его с предыдущим, где-то зафиксированным программой? Ну, вот, например, есть файл базы данных, в который заносится какая-то информация (размер в байтах, соответсвенно меняется). Программа должна между запусками помнить последнее измеренное значение. Кто-то, после очередного изменения, вызывает программу и она должна, прежде чем выдать необходимый результат, произвести измерения файла в данный момент и сравнить с размером предыдущим. Если есть разница, тогда выполняется корректировка данных. |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
еще есть:
Event::Notify http://search.cpan.org/~dmaki/Event-Notify...Event/Notify.pm File::ChangeNotify http://search.cpan.org/~drolsky/File-Chang...ChangeNotify.pm с библиотеки EV как-то можно, наверное MVC Catalyst когда работает и когда изменились файлы, то веб-сервер(HTTP::DEAMON) может перегрузить себя, чтобы внеслись изменения в работающее приложение Это сообщение отредактировал(а) gcc - 12.12.2010, 11:32 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
какие проблемы, пишите результат измерения куда хотите(файл, база еще какие варианты), при запуске читайте их в хеш и сравнивайте. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |