perl - ¿El autodie-pragma tiene influencia en la codificación?
encoding (1)
¿Por qué obtengo después de "autodie" una salida diferente?
#!/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
A menos que alguien venga con una razón mejor, esto parece un error con autodie
en relación con el pragma open
.
Cambiando la última apertura para open my $fh2, ''<:utf8'', ''test.txt'';
Soluciona el problema en mi sistema. Así que eso podría ser un trabajo temporal.
Acabo de comprobar RT, y este es un error registrado:
https://rt.cpan.org/Public/Bug/Display.html?id=54777
Parece que tiene que ver con cada pragma usando diferentes formas de sobrecargar la función open
.