16.16 シグナルハンドラを一時的に上書きする

  • localを使用して、シグナルの動作を一時的にオーバーライドする
# シグナルハンドラ
sub ding {
  $SIG{INT} = \&ding;
  warn "\aEnter your name!\n";
}

# 名前の要求をするために、SIGINTをオーバーライドする。
sub get_name {
  local $SIG{INT} = \&ding;
  my $name;

  print "Kindly Stranger, please enter your name: ";
  chomp( $name = <> );
  return $name;
}