gpt4 book ai didi

perl - 使用 File::ChangeNotify 模块监视文件夹时,如何获取已修改的文件

转载 作者:行者123 更新时间:2023-12-02 04:15:31 25 4
gpt4 key购买 nike

#!/opt/perl_5.18.2/linux50/bin/perl

use strict;
#use warnings;

use File::ChangeNotify;

$| = 1;

my $watcher = File::ChangeNotify->instantiate_watcher(
directories => [ '/var/icc_shantesh/logs' ],
filter => qr/\.log/,
);

while ( my @events = $watcher->wait_for_events ) {
print "loop got executed\n";
print "File name: $_\n";
}

我正在使用File::ChangeNotify在我的研发环境中的上述代码中。该脚本监视文件夹并在发生更改时发出通知。我想知道已更改的文件的名称及其更新的内容

最佳答案

@events 数组包含您想要的信息:

 while (my @events = $watcher->wait_for_events){
print "loop got executed\n";
foreach my $event (@events) {
print "File name: " . $event->path . "\n";
}
}

该数组包含 File::ChangeNotify::Event对象,它们有一个用于文件名的 path 访问器,以及一个用于表示已完成何种更改的 type 访问器。

您可以查看手册页上的示例并将代码重写为如下所示:

 for my $event ( $watcher->new_events() ) {
print "File name: ", $event->path(), ' - ', $event->type(), "\n";
}

$_ 是 perl 的默认变量,但是当您像在循环中那样显式设置变量时 (my @events = ...) $_ 未被使用。

关于perl - 使用 File::ChangeNotify 模块监视文件夹时,如何获取已修改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com