電子書籍の厳選無料作品が豊富!

恐れ入ります。

一定時間後にプログラムを実行したいのですが、sleepですと、すべてのプログラムが停止してしまいます。
プログラムの一部を、一定時間後に実行するにはどうしたらよいのか苦戦しています。

$SIG{ALRM} = \&timeout;
eval {
alarm 5;
print qq!
再生中!;
alarm 0;
};
alarm 0;
sub timeout{
print qq!5秒経ちました!;
}

としてみましたが、うまくいきません。再生中を表示しながら、5秒後に5秒経ちましたと、
再生中を表示しながら表示したいのですが、どのようにしたら良いでしょうか。

よろしくお願いします。

A 回答 (1件)

何がどう上手くいかないんですかね?



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 = <STDIN>;
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
    • good
    • 0
この回答へのお礼

ありがとうございます。大変参考になりました。

お礼日時:2014/09/27 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!