我想在更改源代码或测试时自动运行prove
,我正在使用Win32::ChangeNotify,但是我不知道为什么即使单个文件更改,while
主体也运行两次,我实际上想监视所有更改,但只执行行动一次。
require Win32::ChangeNotify;
$notify = Win32::ChangeNotify->new("./", 1, "LAST_WRITE");
while (my @events = $notify->wait) {
print @events, "----\n";
$notify->reset;
}
最佳答案
File::ChangeNotify
提供更好的事件,它是跨平台的。
use File::ChangeNotify;
use Data::Dumper;
$| = 1;
my $watcher = File::ChangeNotify->instantiate_watcher(
directories => [ 't', 'lib' ],
filter => qr/\.t|\.pl|\.pm/,
);
while (my @events = $watcher->wait_for_events) {
print Dumper(@events);
}
修改单个文件后,它会打印单个事件,至少这是我观察到的。