0

在我的脚本执行之前会生成一个动态文件。

my $file = a.txt;

在这里我想检查:

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

我正在寻找如下解决方案:

  • if ( if_modified( $file );

    --> 但是我们需要一个初始化文件并与最新的文件进行比较,而这里我们一次只有一个文件。

  • $monitor->watch($file); 它能够完成我的任务吗?

  • 我想不需要使用校验和,因为在那之后我还需要查看校验和结果是否改变。

4

2 回答 2

2

有几种可能:

和 Linux 特定的:

正如@choroba 所提到的

于 2018-09-24T09:19:10.173 回答
2

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 函数

于 2018-09-24T11:17:20.533 回答