No necesitas poner 'use utf8;' para usar utf8::encode().
Extraído de
perldoc utf8:
Using text Syntax Highlighting
Funciones auxiliares
Las siguientes funciones se definen en el paquete "utf8::" en el núcleo de Perl. No necesita decir "use utf8" para usarlas y, de hecho, no debería hacerlo a menos que el código fuente esté realmente en UTF-8.
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Es más... el propio paquete JSON dispone de su propia función de decodificación, así que tampoco necesitas llamar a esa función:
Using perl Syntax Highlighting
my ($json_url) = @_;
my $browser = WWW::Mechanize->new();
eval{
# descargar la página json:
print "Obteniendo json $json_url\n";
$browser->get( $json_url );
my $contenido = $browser->content();
my $json = JSON->new();
my $json_texto = $json->allow_nonref->utf8($contenido);
my @json_decodificado = decode_json($json_texto);
print Dumper(@json_decodificado), length(@json_decodificado), "\n";
...;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
También hay posibilidad de pasarlo, directamente, a una estructura Perl:
$perl_scalar = from_json( $json_texto, { utf8 => 1 } );que es equivalente a escribir todo esto:
$perl_scalar = JSON->new->utf8(1)->decode($json_texto);aunque el módulo recomienda usar mejor decode_json(), ya que lo hace a partir de datos que estén en utf8.