Я ожидаю:
#!/usr/bin/perl
use autodie;
# autodie in effect here
{
no autodie;
# autodie is not in effect here
}
# autodie should be in effect here because of the supposedly lexical scope
# of autodie, but this doesn't die:
open my $i, '<', '/nonexistent';
Я основываю это на perldoc autodie
, который гласит:
Прагма "autodie" имеет лексическую область действия, что означает, что функции и подпрограммы, измененные с помощью "autodie", изменят только их поведение до конца закрывающего блока, файла или "eval"
Кроме того, { no autodie }
(в области видимости) является частью SYNOPSIS
use/no warnings
ведет себя так, как я ожидаю:
#!/usr/bin/perl
use warnings;
{
no warnings;
}
# This *does* generate a warning
print undef;
Я что-то пропустил или вы согласны с ошибкой в autodie? Я не нашел ничего в автоопределении buglist
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
РЕДАКТИРОВАТЬ: Я теперь подал отчет об ошибке