texのerrorとかwarningとかの監視

texの状態をApp::watcherで監視してエラーとか警告の監視をしたかったので、!とかWarning出たらCocoa::Growlで通知するようにした。
watcherの引数を組立ててるけど、結局量が増えてくるとFilesys::Notify::Simpleだけで書いたほうが良い気がしてきた........

use IPC::Cmd qw/run_forked/;
use Cocoa::Growl ':all';

my @commands;

my $print_handle = sub {
    my $line = shift;
    if ( $line =~ /^! / ) {
        growl_notify(
            name => "error",
            title => "error",
            description => $line,
        );
    }
    elsif ( $line =~ /^Warning/ ) {
        growl_notify(            
            name => "warning",            
            title => "warning",
            description => $line,
        );
    }
    print $line;
};

run_forked(
    join(" ", @commands),
    {  
        stdout_handler => $print_handle,
        stderr_handler => $print_handle,
    },
);

追記

こうした。