А local $@ будут? Вообще, я конечно понимаю пойнт eval { 1; } or do {}; Но вообще, это выглядит как дутьё на воду, которое уродует код и слабо защищает.
А local $@ будут? Вообще, я конечно понимаю пойнт eval { 1; } or do {}; Но вообще, это выглядит как дутьё на воду, которое уродует код и слабо защищает.
не согласен по обоим пунктам 1. никакой синтаксической разницы с eval {};if($@) {} 2. каким это образом оно "слабо защищает"?
1. Да, но например, можно сделать my $result = eval {}; if ( $@ ) {} 2. Если в функции вызываемой внутри eval {} кто-то сделает eval { dangerous_effectful_things; } то вариант с "or do {}" не сможет ничего сделать.