構文 |
|
alarm 送信までの秒数 |
返り値 |
|
前回のタイマーの残り秒数 |
説明
- 指定した時間の後にSIGALRMシグナルを送るようにタイマーを設定します。返値は前回のタイマーの残り秒数です。
- 0を指定するとタイマーの設定を無効にします。
使用例
#!/usr/bin/perl
use strict;
use warnings;
my $alarm_time = 3;
printf "%d秒以内に何か入力して下さい。\n", $alarm_time;
{
local $SIG{ALRM} = \&time_out;
alarm $alarm_time; # タイマーを設定
my $input_string = <>;
my $tim = alarm 0; # タイマーを解除
chomp $input_string;
printf "残り%d秒で%sが入力されました。\n", $tim, $input_string;
}
print "プログラムを終了します。\n";
exit;
sub time_out {
print "時間切れのため終了します。\n";
exit 1;
}
#!/usr/bin/perl
use strict;
use warnings;
my $alarm_time = 3;
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 $@;
}
}
print "プログラムを終了します。\n";