2014-01-15 95 views
5

我在Windows系統中安裝了File::ChangeNotify並嘗試運行下面的代碼:如何在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"} 

當我運行該腳本,並嘗試創建一個新的文件.txt或修改.txt文件c:\files下的腳本沒有打印任何東西。

回答

5

它爲我(在Linux上),如果我加入這一行:

$| = 1; 

然後我看到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"} 

UPDATE:作爲CJM機敏地指出的那樣,增加一個新行工作,以替代$|

while (my @events = $watcher->wait_for_events()) { print "new event\n"} 
+1

它的工作原理感謝 – user3019319

+2

或「打印」新事件\ n「' – cjm

+0

@cjm:謝謝。我更新了我的答案。 – toolic