strawberry programa logo lane example descargar compilador perl

programa - ¿Error en autodie.pm de Perl?



perl vs python (2)

Estoy esperando:

#!/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 eso en la perldoc autodie que dice:

El pragma "autodie" tiene un alcance léxico, lo que significa que las funciones y subrutinas alteradas con "autodie" solo cambiarán su comportamiento hasta el final del bloque, archivo o "eval" adjunto.

Además, { no autodie } (en un ámbito) es incluso parte de SYNOPSIS

use/no warnings comporta como espero:

#!/usr/bin/perl use warnings; { no warnings; } # This *does* generate a warning print undef;

¿Me he perdido algo o está de acuerdo con que haya un error en la autodie? No encontré nada en la lista de errores de autodie

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi

EDITAR: ahora he archivado un informe de error


La sinopsis no muestra en realidad que la directiva tenga un alcance léxico, pero se menciona varias veces en otra parte de la documentación. Esto es claramente un error.

La pregunta es: ¿el error todavía existe?

$ perl -E''use autodie; say $autodie::VERSION'' 2.1001 $ perl -we''use autodie; { no autodie; } open(my $fh, "<", "nonexistant");'' $ perl -we''use autodie; open(my $fh, "<", "nonexistant");'' Can''t open ''nonexistant'' for reading: ''No such file or directory'' at -e line 1 $ perl -we''{ use autodie; } open(my $fh, "<", "nonexistant");''

Sí, lo hace. No es solo no autodie; eso está roto, sin embargo. Curiosamente, esa versión de autodie es más nueva de lo que actualmente está disponible en CPAN ?! Así que me degradaron y lo intenté de nuevo.

$ perl -E''use autodie; say $autodie::VERSION'' 2.10 $ perl -we''use autodie; { no autodie; } open(my $fh, "<", "nonexistant");'' $ perl -we''use autodie; open(my $fh, "<", "nonexistant");'' Can''t open ''nonexistant'' for reading: ''No such file or directory'' at -e line 1 $ perl -we''{ use autodie; } open(my $fh, "<", "nonexistant");''

Los errores se pueden archivar utilizando el rastreador de errores de autodie.


Puedo reproducir esto con v5.10.0 (Debian x86_64) y ActiveState 5.14.2.

Prueba esta ubicación para obtener informes de errores.

EDITAR He probado algunos: para eludir el problema hasta que se solucione el error, tendrás que volver a use Autodie:

use strict; use autodie; do { no autodie; # ... } while(0); use autodie; open FILE, ''<'', ''/non-existing''; # dies again.