• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:alarmのタイムアウト後の処理でスクリプトを止めない方法をご教授ください)

alarmタイムアウト後のスクリプト停止方法

このQ&Aのポイント
  • Perlで作成しているRSSリーダーのタイムアウト後のスクリプト停止方法について教えてください。
  • 現在、perlで簡単なRSSリーダーを作成しています。rssファイルを10秒以内に取得できない場合は、次のrssファイルに進むようにしたいのですが、どうすれば良いですか?
  • タイムアウト後にスクリプトが自動的に停止するのではなく、次の処理に進む方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

die は eval で捕捉できるので、このようなケースでは次のようにします。 foreach (@hoge) {   eval {     local $SIG{ALRM} = sub { die "TimeOut" };     alarm 10;     $rss->parse($_);     alarm 0;   };   if ($@ =~ /TimeOut/) {  # $@ には die のパラメータなどが設定される     # タイムアウト時の処理   } } タイムアウト時の処理が不要な場合は、if ($@ ~) { ・・・ } を削除して下さい。 ※インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。

eltech
質問者

お礼

おかげ様で解決することができました。 evalで回避する方法があったんですね。 勉強不足でした... ありがとうございました。

関連するQ&A

専門家に質問してみよう