Linux の lsync みたいなのが欲しくてちょっと調査。
lsync そのものはないけど、Filesys::Notify::KQueue を使えば同じような事
が簡単にできそうなのでちょっと使ってみました。
ほぼサンプルのままですが動作確認用にソースこんな感じで。
# vi kqueue.pl ----- #!/usr/bin/perl use strict; use warnings; use Filesys::Notify::KQueue; use Data::Dumper; my $notify = Filesys::Notify::KQueue->new( path => [qw(/home/test)], timeout => 1000, ); while ( 1 ) { $notify->wait(sub { my @events = @_; foreach my $event (@events) { print Dumper( $event ); } }); }
perl kqueue.pl で実行して、
■ /home/test に test.txt を新規作成
$VAR1 = { 'path' => '/home/test/test.txt', 'event' => 'create' };
■ /home/test の test.txt を変更
$VAR1 = { 'path' => '/home/test/test.txt', 'event' => 'modify' };
■ /home/test の test.txt を削除
$VAR1 = { 'path' => '/home/test/test.txt', 'event' => 'delete' };
こんな感じにファイルイベントを監視できる。便利 !