2014-01-15 11 views
5

Ich installierte File::ChangeNotify auf Windows-System und versuchen Sie den folgenden Code auszuführen:Wie kann ich File :: ChangeNotify unter Windows verwenden?

my $watcher = 
    File::ChangeNotify->instantiate_watcher 
     (directories => [ 'C:\files' ], 
      filter => qr/\.txt$/ 
     ); 


# # blocking 
while (my @events = $watcher->wait_for_events()) { print "new event"} 

Als ich das Skript ausgeführt und versuchen, eine neue .txt Datei oder ändern, um eine .txt Datei unter c:\files das Skript drucken nichts zu erstellen .

Antwort

5

Es funktioniert für mich (auf Linux), wenn ich diese Zeile hinzu:

$| = 1; 

Dann sehe ich new event.

-perldoc perlvar Siehe: $| oder $OUTPUT_AUTOFLUSH

Dies ist die komplette Code:

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: Wie cjm astutely weist darauf hin, das Hinzufügen eines Newline als Alternative arbeitet an $|:

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

es funktioniert dank – user3019319

+2

Oder "drucken" neues Ereignis \ n "' – cjm

+0

@cjm: Danke. Ich habe meine Antwort aktualisiert. – toolic

Verwandte Themen