関数順 インデックス
目的別 インデックス

構文
 
 alarm 送信までの秒数

返り値
 
 前回のタイマーの残り秒数

説明

  • 指定した時間の後にSIGALRMシグナルを送るようにタイマーを設定します。返値は前回のタイマーの残り秒数です。
  • 0を指定するとタイマーの設定を無効にします。

使用例

3秒以内に入力しないとプログラムを終了する
#!/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;
}
3秒以内に入力しない場合にエラー処理を実行
#!/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";