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'
};
こんな感じにファイルイベントを監視できる。便利 !