2011-02-10 7 views
16

¿Por qué obtengo después de la "autodie" una salida diferente?¿Tiene el autodie-pragma influencia en la codificación?

#!/usr/bin/env perl 
use warnings; 
use 5.012; 
use utf8; 
use open ':encoding(utf-8)'; 
use open ':std'; 

open my $fh, '>', 'test.txt' or die $!; 
say $fh 'käse'; 
close $fh; 

open my $fh1, '<', 'test.txt' or die $!; 
while (my $row = readline($fh1)) { 
    print $row; 
} 
close $fh1; 

use autodie; 

open my $fh2, '<', 'test.txt'; 
while (my $row = readline($fh2)) { 
    print $row; 
} 
close $fh2; 

# Output: 
# käse 
# käse 

Respuesta

17

A menos que alguien llega con una mejor razón, esto parece un error con autodie en relación con el open pragma.

Cambiando el último abierto a open my $fh2, '<:utf8', 'test.txt'; soluciona el problema en mi sistema. Entonces eso podría ser un trabajo temporal.

acabo de comprobar la temperatura ambiente, y esto es un error registrada:

https://rt.cpan.org/Public/Bug/Display.html?id=54777

parece que tiene que ver con cada uno pragma utilizando diferentes formas de sobrecargar la función open.

+1

Acabo de elaborar un parche para ese error. https://github.com/pfenwick/autodie/pull/12 – Schwern

Cuestiones relacionadas