我在Windows系统上安装了File :: ChangeNotify并尝试运行以下代码:
my $watcher =
File::ChangeNotify->instantiate_watcher
( directories => [ 'C:\files' ],
filter => qr/\.txt$/
);
# # blocking
while ( my @events = $watcher->wait_for_events() ) { print "new event"}
Run Code Online (Sandbox Code Playgroud)
当我运行脚本并尝试创建新.txt
文件或修改脚本.txt
下c:\files
的文件时没有打印任何内容.
如果我添加这行,它适用于我(在Linux上):
$| = 1;
Run Code Online (Sandbox Code Playgroud)
然后我明白了new event
.
请参阅perldoc perlvar:$|
或$OUTPUT_AUTOFLUSH
这是完整的代码:
use warnings;
use strict;
use File::ChangeNotify;
$| = 1;
my $watcher =
File::ChangeNotify->instantiate_watcher
( directories => [ 'C:\files' ],
filter => qr/\.txt$/
);
# # blocking
while ( my @events = $watcher->wait_for_events() ) { print "new event"}
Run Code Online (Sandbox Code Playgroud)
更新:正如cjm精明地指出的那样,添加换行符可以替代$|
:
while ( my @events = $watcher->wait_for_events() ) { print "new event\n"}
Run Code Online (Sandbox Code Playgroud)