Этот бит кода ведет себя иначе в Perl 5.8, чем в Perl 5.12:
my $badcode = sub { 1 / 0 };
print "Made it past the bad code.\n";
Когда я запускаю его под 5.8, я получаю ошибку, хотя я никогда не выполняю деление:
[brock@chase tmp]$ /usr/bin/perl -v
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
[brock@chase tmp]$ /usr/bin/perl badcode.pl
Illegal division by zero at badcode.pl line 1.
[brock@chase tmp]$ /usr/local/bin/perl -v
This is perl 5, version 12, subversion 0 (v5.12.0) built for i686-linux
[brock@chase tmp]$ /usr/local/bin/perl badcode.pl
Made it past the bad code.
В perl 5.10.1 он ведет себя так же, как и в 5.12:
brock@laptop:/var/tmp$ perl -v
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
brock@laptop:/var/tmp$ perl badcode.pl
Made it past the bad code.
Я получаю те же результаты с именованной подпрограммой, например,
sub badcode { 1 / 0 }
Я ничего не вижу об этом в модуле perl5100delta. Это недокументированное изменение? Непреднамеренный побочный эффект какого-либо другого изменения? (Для справки, я думаю, 5.10 и 5.12 делают правильные вещи.)