質問: \&timeout eval { alarm 5; print qq! 再生中!; alarm 0; }; alarm 0; sub timeout{ print qq!5秒経ちました!; } としてみましたが、うまくいきません。再生中を表示しながら、5秒後に5秒経ちましたと、 再生中を表示しながら表示したいのですが、どのようにしたら良いでしょうか。 よろしくお願いします。
回答: 何がどう上手くいかないんですかね? use posix 'strftime'; $sig{alrm} = \&timeout eval { alarm 5; my $str_time = strftime( "%y-%m-%d %h:%m:%s", localtime ); print "$str_time\n"; my $line = ; alarm 0; }; sub timeout { print "time-out\n"; my $str_time = strftime( "%y-%m-%d %h:%m:%s", localtime ); print "$str_time\n"; exit 0; } $ perl -w foo.pl 2012-08-16 03:53:35 time-out 2012-08-16 03:53:40