我期待着:

#!/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/

10-11 04:12