foreop escribiste:Tengo que ejecutarlo como: perl script.pl (./script.pl me dice "cannot execute binary file").
Si hablas de Notepad++, deducimos que estás en Windows. En perlwin32, sección
Running Perl Scripts te pone tres métodos para ejecutar programas Perl en Windows de forma cómoda. De todas maneras, con distribuciones como ActivePerl, eso debería estar instalado de base.
foreop escribiste:Los caracteres acentuados, no se ven bien en la consola. (La consola usará codificación diferente).
Sí, así es. La consola usa la codificación CP850 o CP852.
Mira este hilo.
foreop escribiste:Lee y escribe archivos UTF-8 perfectamente.
Usando el
pragma open IO como lo tienes hecho, te lo hace Perl de forma automática.
foreop escribiste:¿Qué debería hacer para poder abrir un archivo en cualquier codificación como utf-8?
Lo principal es
saber la codificación en la que está el archivo que leemos y
saber en qué codificación queremos la salida.
foreop escribiste:Abrir un archivo, sin importar la codificación.
Bueno, siempre puedes abrirlo con ':raw', y así sabes que lo estás abriendo como una ristra de bytes..
foreop escribiste:Tratarlo como si fuese utf-8.
Con la función decode_utf8() del módulo
Encode, puedes decodificar la ristra leída antes, como utf8.
foreop escribiste:Escribir otro archivo, con la misma codificación que el primero.
Ya, pero primero hay que saber la codificación de entrada. Con el módulo
Encode::Guess puedes intentar adivinarlo, pero solo si es ascii, utf8 o UTF-16/32 con BOM. Quizás con
Encode::Guess::Educated, pero no tiene documentación. Seguramente,
Encode::Locale sea tu mejor opción. Lo que no sé decirte es cómo ya que no lo he usado nunca.