$@($EVAL_ERROR)っていつリセットされるの?
あらまし
eval{ ほげほげ }; if($@){ ふがふが }
みたいなエラートラップ書きまくってて、
「え、ちょっと待てよ、evalするたび$@($EVAL_ERROR)って本当にリセットされるの?」
とふと自信なくなっちゃって。
実験
test.pl
#!/usr/bin/perl use strict; eval{ print qq(try1\n); die('throw 1'); }; if($@){ print qq(catch1: $@); } eval{ print qq(try2\n); my $dummy = 1; }; if($@){ print qq(catch2: $@); } exit;
実行
$ perl test.pl try1 catch1: throw 1 at test.pl line 7. try2
結論
evalするたびともだちふえるね$@はリセットされる