℞ 13: Decodificar los argumentos del programa en utf8Mientras que el
preámbulo Unicode Perl estándar hace que los gestores de archivos usen la codificación UTF-8 por defecto, los gestores de archivo no son las únicas fuentes y destinos de datos. Los argumentos en la línea de comandos de sus programas, disponibles a través de @ARGV, también pueden necesitar ser decodificados.
Puede hacer que Perl maneje esta operación por si solo automáticamente, de dos formas distintas; y una más, usted mismo, de forma manual. Como se documenta en
perldoc perlrun, la opción -C controla las características Unicode. Use el modificador A para que Perl trate a sus argumentos como cadenas UTF-8:
Using bash Syntax Highlighting
$
perl -CA ...
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Puede, naturalmente, usar -C en la línea
shebang de sus programas.
La segunda forma es usar la variable de entorno PERL_UNICODE. Toma los mismos valores que la opción -C. Para obtener los mismos efectos que -CA, escriba:
Using bash Syntax Highlighting
$
export PERL_UNICODE=A
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Puede desactivar temporalmente este tratamiento Unicode automático con PERL_UNICODE=0.
Finalmente, puede decodificar los contenidos de @ARGV usted mismo, de forma manual, con el módulo
Encode:
Using perl Syntax Highlighting
use Encode qw(decode_utf8);
@ARGV = map { decode_utf8($_, 1) } @ARGV;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Artículo original (en inglés)