• Publicidad

Leer salida de consola de otro script

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

Leer salida de consola de otro script

Notapor Zeokat » 2008-12-28 22:21 @973

Jeje, no sé si es posible, pero a ver, yo lo planteo.

Tengo un script en Perl, la verdad es bastante extenso y no entiendo mucho código del que contiene, así que no me atrevo a aventurarme a modificarlo para que ese script me ponga en un archivo txt los resultados.

Me explico, tengo un script llamado, programa.pl y otro llamado generador.pl.

El programa.pl acepta argumentos de la consola, por ejemplo:

Código: Seleccionar todo
programa.pl 5
programa.pl 12
programa.pl 25


Yo escribí un par de líneas usando la función system():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $i ( 0 .. 10 ) {
    system("perl programa.pl $i");
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Entonces ya se ejecuta solo 10 veces. El problema es que programa.pl me muestra el resultado en pantalla y yo quería saber si era posible capturar lo que va saliendo y almacenarlo en un txt.

Estaba la opción de:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $i ( 0 .. 10 ) {
    system("perl programa.pl $i >>resultado.txt");
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Pero eso no me va mostrando en pantalla como va avanzando el programa... solo puedo saber si hubo algún error hasta que termina y el proceso y veo el txt.

Gracias de antemano como siempre.

Y feliz navidad :)
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Publicidad

Re: Leer salida de consola de otro script

Notapor explorer » 2008-12-29 00:12 @050

Zeokat escribiste:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for my $i ( 0 .. 10 ) {
    system("perl programa.pl $i");
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Entonces ya se ejecuta solo 10 veces.
Yo creo que son 11 :)

Zeokat escribiste:El problema es que programa.pl me muestra el resultado en pantalla y yo quería saber si era posible capturar lo que va saliendo y almacenarlo en un txt.


Eso se puede hacer con un poco de fontanería.

En Linux/Unix, yo suelo hacer eso con un trozo de tubería en forma de 'T':

Código: Seleccionar todo
script.pl | tee log.txt

El script.pl se ejecuta de forma normal y la salida se entuba (|) hacia el comando tee, que redirige lo que le llega hacia la salida estándar y los ficheros que le digamos (vamos, que hace lo mismo que una tubería en forma de 'T').

Desconozco si existe eso mismo para Windows (tampoco importa mucho).

O usar otro módulo Perl: File::Tee, de nuestro compañero Salva.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use File::Tee qw(tee);

tee(STDOUT, '>', 'log.txt');

system("perl programa.pl $_") for 0 .. 9;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Hay más módulos en CPAN que hacen cosas parecidas a tee.

Hay otra opción, que es mucho más profesional y seria: Log::Log4perl.
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 Zeokat » 2009-01-05 13:55 @622

Sip sip sip.... gracias de nuevo explorer.

Lo probé hoy y funciona :)
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380


Volver a Básico

¿Quién está conectado?

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

cron