Lun Jun 23, 2008 12:45 pm
|
|
|
| Imprimir a varios ficheros |
|
|
Hola a todos:
¿Es posible, en Perl, imprimir a más de un fichero a la vez? ¿Sería válido algo como:
| Perl: | my $var;
open (FPTIM, "> ./fich1");
open (FPTOP, "> ./fich2");
print FPTIM, FPTOP $var; | ?
Gracias,
Xagutxu |
|
|
|
Lun Jun 23, 2008 1:08 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4036
Ubicación: Valladolid, España
|
|
|
|
|
No, no se puede. Al menos, no se puede indicar más de un manipulador de ficheros por cada sentencia print.
No sé si se puede hacer de otra manera. Quizás con alguna variante del open().
Ultima edición por explorer el Lun Sep 01, 2008 4:06 pm, editado 1 vez |
|
Lun Jun 23, 2008 3:15 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1366
Ubicación: México
|
|
|
|
|
Hola:
Si ves la documentación de la función print verás que no es algo posible de hacer.
Creo que no habrás más opción que hacer dos llamadas a print:
Saludos |
|

Lun Jun 23, 2008 4:05 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4036
Ubicación: Valladolid, España
|
|
|
|
|
Lo encontré. Receta 7.8 del Perl Cookbook.
Mientras que la solución sencilla es hacer un bucle por todos los manipuladores:
| Perl: | foreach $filehandle (@FILEHANDLES) {
print $filehandle $stuff_to_print;
} |
otra forma es usar el programa tee
| Perl: | open( MANY, "| tee file1 file2 file3 > /dev/null" ) or die $!;
print MANY "data\n" or die $!;
close(MANY ) or die $!; |
y en caso de no disponer del comando tee en el sistema, se puede usar el módulo IO::Tee
| Perl: | use IO:: Tee;
$tee = IO:: Tee-> new(@FILEHANDLES);
print $tee $stuff_to_print; |
En la receta hay una explicación más detallada y algún ejemplo más, como redireccionar el propio STDOUT. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|