使用 File::ChangeNotify 模块监视文件夹时如何获取修改后的文件
while Monitoring a folder using File::ChangeNotify module how can i get the file which got modifed
#!/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 = ...
) $_
未被使用。
#!/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 = ...
) $_
未被使用。