タイムアウト処理
ある時間で処理を打ち切る場合には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関数・一文字入力待ち
