Linux::Inotify2+Growl::Anyでファイルの変更を監視する
Linux::Inotify2ではなくFilesys::Notify::Simpleを使った方がポータブルですが、とりあえずは習作ということで。監視しているディレクトリで何かがあるとピコピコ通知されるので、ああ今PCが頑張っているのだなあという気持ちになれます。
#!perl -w use strict; use Linux::Inotify2; use Growl::Any 0.05; # ※Growl::NotifySend や Desktop::Notify などが必要 my $dir = shift(@ARGV) || '.'; my $w = Linux::Inotify2->new(); my $g = Growl::Any->new( appname => 'inotify-growl', events => ['modify'] ); # copied and modified from @Linux::Intofy2::EXPORT my @events = qw( IN_ACCESS IN_MODIFY IN_ATTRIB IN_CLOSE_WRITE IN_CLOSE_NOWRITE IN_OPEN IN_MOVED_FROM IN_MOVED_TO IN_CREATE IN_DELETE IN_DELETE_SELF IN_MOVE_SELF ); my $mask = IN_MODIFY | IN_MOVED_TO | IN_MOVED_FROM | IN_CREATE | IN_DELETE; $w->watch($dir, $mask); while(1) { my @e = $w->read(); last unless @e; my @names; foreach my $event(@e) { push @names, $event->fullname . ': ' . join ' ', grep { $event->$_() } @events; } $g->notify( 'modify', 'inotify', join "\n", @names); } __END__