Лучший способ проверить содержимое файла изменилось или нет с Perl? - PullRequest
0 голосов
/ 24 сентября 2018

Есть динамический файл, который будет сгенерирован перед выполнением моего скрипта.

my $file = a.txt;

Здесь я хочу проверить:

(Is content of $file changed)? Do_something: Skip;

Я ищу какое-то решение, как показано ниже:

  • if (if_modified ($ file);

    -> Но нам нужен файл инициализации и сравнение с последним файлом, в то время как здесь у нас только 1 файл ввремя.

  • $ monitor-> watch ($ file); способен ли он выполнить мою задачу?

  • Я предполагаю, что с помощью контрольной суммыне нужен, потому что после этого мне также нужно посмотреть, изменился ли результат контрольной суммы.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Операторы файла Perl и функция stat также сообщают вам, когда файл был изменен в последний раз (это время модификации).Обычный подход заключается в проверке некоторого эталонного файла, то есть был ли файл изменен позже, чем эталонный файл, или для проверки, когда файл был изменен относительно начала скрипта.

Получите время, когда файлПоследнее изменение

my $last_modified = (stat $filename)[9];

if( $last_modified >= $other_modified ) {
    # file changed since we last checked ...
    $other_modified = $last_modified;
};

Проверить, был ли файл изменен несколько дней назад:

if( -M $filename > 5 ) {
    print "'$file' was modified at least 5 days ago\n";
};

См. также

stat , функция -M

0 голосов
/ 24 сентября 2018

Есть несколько возможностей:

И для Linux:

как упомянуто @ choroba

...