Это продолжение «Как я могу обойти вызов« die »в библиотеке Perl, которую я не могу изменить?» .
У меня есть подпрограмма, которая вызывает библиотеку, которая приводит к сбою, иногда много раз. Вместо того чтобы заключать каждый вызов в этой подпрограмме в eval {}, я просто позволяю ему умереть и использую eval {} на уровне, который вызывает мою подпрограмму:
my $status=eval{function($param);};
unless($status){print $@; next;}; # print error and go to
# next file if function() fails
Тем не менее, есть ошибки, которые я могу и поймаю в функции (). Каков наиболее правильный / изящный способ создания функции обнаружения ошибок в подпрограмме и подпрограмме вызова, чтобы я получал правильное поведение как для обнаруженных, так и для необнаруженных ошибок?