我期待着:
#!/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
说:另外,
{ no autodie }
(在范围内)甚至是SYNOPSIS的一部分use/no warnings
的行为符合我的预期:#!/usr/bin/perl
use warnings;
{
no warnings;
}
# This *does* generate a warning
print undef;
我是否错过了某些东西,或者您是否同意autodie中存在错误?我在autodie buglist中什么都没找到
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
编辑:我现在提交了a bug report
最佳答案
我可以使用v5.10.0(Debian x86_64)和ActiveState 5.14.2重现此内容。
尝试this location以获得错误报告。
编辑我测试了一些:为了解决该问题,直到错误修复,您需要再次use
自动压模:
use strict;
use autodie;
do {
no autodie;
# ...
} while(0);
use autodie;
open FILE, '<', '/non-existing'; # dies again.
关于perl - 在perl的autodie.pm中有问题吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7927139/