• Publicidad

Imprimir a varios ficheros

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Imprimir a varios ficheros

Notapor xagutxu_perez » 2008-06-23 13:45 @615

Hola a todos:

¿Es posible, en Perl, imprimir a más de un fichero a la vez? ¿Sería válido algo como:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $var;

open (FPTIM, "> ./fich1");
open (FPTOP, "> ./fich2");

print FPTIM, FPTOP $var;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
?

Gracias,

Xagutxu
xagutxu_perez
Perlero nuevo
Perlero nuevo
 
Mensajes: 43
Registrado: 2008-04-04 03:56 @206

Publicidad

Notapor explorer » 2008-06-23 14:08 @630

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().
Última edición por explorer el 2008-09-01 17:06 @754, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2008-06-23 16:15 @719

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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print FPTIM $var;
print FPTOP $var;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2008-06-23 17:05 @753

Lo encontré. Receta 7.8 del Perl Cookbook.

Mientras que la solución sencilla es hacer un bucle por todos los manipuladores:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $filehandle (@FILEHANDLES) {
    print $filehandle $stuff_to_print;
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


otra forma es usar el programa tee

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open( MANY, "| tee file1 file2 file3 > /dev/null" ) or die $!;
print MANY "data\n"                                 or die $!;
close(MANY)                                         or die $!;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y en caso de no disponer del comando tee en el sistema, se puede usar el módulo IO::Tee

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use IO::Tee;
$tee = IO::Tee->new(@FILEHANDLES);
print $tee $stuff_to_print;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En la receta hay una explicación más detallada y algún ejemplo más, como redireccionar el propio STDOUT.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados