タイムアウト処理
ある時間で処理を打ち切る場合にはalarm関数を使います。
WindowsのActivePerlではバージョンによってはalarm関数がサポートされていない場合があります。
use strict; use warnings; my $alarm_time = 5; printf "%d秒以内に何か入力して下さい。\n", $alarm_time; eval { local $SIG{ALRM} = sub { die "timeout" }; alarm $alarm_time; my $input_string = <>; alarm 0; chomp $input_string; printf "%sが入力されました。\n", $input_string; }; if ($@) { # エラー処理 if ($@ =~ /timeout/) { # タイムアウトエラー print "タイムアウトしました。\n"; } else { # その他のエラー alarm 0; die $@; } }
関連項目
・alarm関数・一文字入力待ち