end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

Filesys::Notify::Simple でディレクトリ内の追加/変更/削除を監視

http://search.cpan.org/perldoc?Filesys::Notify::Simple

こういうものがあるんですね。

#!/usr/local/bin/perl
use strict;
use Filesys::Notify::Simple;
use Data::Dumper;

main();

sub main {
    my $watcher = Filesys::Notify::Simple->new([ "./test" ]);
    $watcher->wait(sub {
		       for my $event (@_) {
			   print STDERR Dumper($event);
			   $event->{path}
		       }
		   });

}

と書いて実行し、ファイルやディレクトリを追加/変更/削除すると、そのファイル名やディレクトリの名称を通知してくれます。

[endo@colinux tmp]$ ./foo.pl 
$VAR1 = {
          'path' => '/home/endo/tmp/test/new_file.txt'
        };
[endo@colinux tmp]$ ./foo.pl 
$VAR1 = {
          'path' => '/home/endo/tmp/test/new_dir'
        };

Filesys::Notify::Simple は、追加/変更/削除のあったpathだけを通知するので、更に詳しい情報が知りたければ、File::ChangeNotify や Filesys::Notify を使えばいいのかな?