Пару раз я сталкивался с ситуацией, когда я забыл загрузить модуль Try::Tiny в свой скрипт и все еще использовал его блок try-catch, например:
#!/usr/bin/env perl
use strict;
use warnings;
try {
call_a( 'x' );
} catch {
die "ACTUALLY die $_";
};
sub call_a {
die "Yes, I will";
}
По какой-то причине скрипт работает нормально, без намеков на то, что его нет try. Нет ошибок Undefined subroutine. Это заставляет меня задуматься, почему мои повышенные исключения не обнаружены.
Почему это работает тихо, без ошибок?
EDIT
Я также посмотрел в таблицу символов:
say "$_: %main::{ $_ }" for keys %main::;
и не нашел там try. Также я попытался назвать его как main::try в приведенном выше скрипте, и это также не вызвало ошибок.