ubuntu escribiste:Buenas, espero no equivocarme, pero creo que sería:
Using perl Syntax Highlighting
open(pepito,">pepito.txt");
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
¡Hay que actualizar un poco ese Perl!Hace años que Perl soporta la variante de open con tres argumentos (o más, en ciertos casos) que evita muchos problemas de seguridad.
También es aconsejable utilizar variables léxicas para los manejadores de ficheros en vez de los viejos GLOBs.
Using perl Syntax Highlighting
open(my $fh, '>', $file_name) or die ...;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y ya puestos, un gran invento reciente es el modulo
autodie que nos ahorra toda la gestión de errores como ese
die ... que acabo de poner (el autor del módulo, Paul Fenwick, lo presentó en la última
YAPC::Europe de manera totalmente desternillante, pero aún no se ha publicado el vídeo de la misma para infortunio de los que no lo vieron
"Live").
Volviendo al hilo del mensaje, una opción a veces más sencilla para enviar toda la salida de un programa a un fichero es redirigir directamente STDOUT:
Using perl Syntax Highlighting
open STDOUT, '>', $filename or die ...Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Con esto nos evitamos tener que pasar a print (y demás funciones de salida) el manejador de fichero explícitamente.
Algo similar se puede hacer con la función
select($fh), pero lo cierto es que no es una solución muy popular probablemente porque no funciona bien con librerías externas que usan directamente las funciones de IO de C (el stdio de toda la vida) y no las de Perl.
En cualquier caso y por si las moscas alguien no lo sabe, la forma mas fácil de redirigir la salida de un programa (escrito en Perl o en cualquier otra cosa) a un fichero es desde la shell:
Using bash Syntax Highlighting
$ foo.pl bar doz
> /tmp
/out
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4