• Publicidad

Ejecutar otro programa desde un programa en Perl

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

Ejecutar otro programa desde un programa en Perl

Notapor astrid5 » 2010-07-07 19:42 @862

¡¡¡Hola a todos!!!

Estoy utilizando un código que yo no escribí. Dentro de él hay una subrutina que manda llamar a otro programa.

El problema es que el otro programa se abre en consola y ya no continúa corriendo el programa en Perl. Al parecer no se ejecutan las ordenes dentro del otro programa. ¿Podrían ayudarme a resolver este problema?

Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub decimateData {
 my($file,$decFile) = @_;

 my($decimateString) = calculateDecimation($file);

 open my $sac_fp, "|$sac2000";
 print $sac_fp qq(READ $file
$decimateString
WRITE $decFile
QUIT
);
 close $sac_fp;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666

Publicidad

Re: Ejecutar otro programa desde un programa en Perl

Notapor explorer » 2010-07-08 15:14 @676

Yo no veo problemas... así que sospecho que han debido cambiar algunas de las condiciones que rodean al programa Perl.

Esto es lo que hace:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub decimateData {
    my($file,$decFile) = @_;                          # Leemos los argumentos

    my($decimateString) = calculateDecimation($file); # Hacemos el cálculo de $decimateString

    open my $sac_fp, "|$sac2000";                     # Abrimos la conexión con el programa que está
                                                      # indicado en $sac2000, conectando la salida
                                                      # de $sac_fp a la entrada de ese programa

    print $sac_fp qq(READ $file                       # Empezamos a enviar comandos al programa
$decimateString
WRITE $decFile
QUIT
);

    close $sac_fp;                                    # Cerramos la conexión
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Yo no veo fallos. Pero puede haber ocurrido esto:

* Que se haya actualizado el programa $sac2000 y ahora espera una serie de comandos o en un orden distintos a lo que se indica

* Que el $sac2000 no "entienda" los finales de línea que el programa Perl le envía, por lo que no se entera de dónde se terminan cada una de las órdenes. Un ejemplo: el programa Perl está escrito con finales de línea en formato UNIX, pero $sac2000 requiere que los finales de línea sean en formato MSDOS.

No nos dices qué sale en la ventana del comando. Es de suponer que debería salir los comandos que se le mandan.

Lo que no entiendo es porqué se abre una nueva consola con el programa $sac2000... Si ejecutas el programa Perl desde una consola, $sac2000 NO debería arrancar una nueva consola.

¿En qué sistema operativo estás?
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

Re: Ejecutar otro programa desde un programa en Perl

Notapor astrid5 » 2010-07-08 22:54 @995

¡¡Hola explorer!!

Estoy utilizando como sistema operativo Linux, Ubuntu 8.04. En cuanto al programa SAC2000 los comando que se manejan están bien. El programa SAC2000 se abre en la misma consola, es decir, escribo en consola:

perl SACtoDSN.pl --input Archivo1 --output Archivo2

Después aparece

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
 SEISMIC ANALYSIS CODE [06/06/2005 (Version 100.1)]
 Copyright 1995 Regents of the University of California
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


que es la forma en la que inicia el programa SAC2000, así que empecé a revisar el código en Perl y me dí cuenta que el problema es en esa subrutina, ya que no aparecen nunca los comandos que manda ejecutar.

Espero puedas ayudarme, Gracias.
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666

Re: Ejecutar otro programa desde un programa en Perl

Notapor explorer » 2010-07-09 07:35 @357

Una pregunta. ¿Esto ha llegado a funcionar alguna vez y ha empezado a fallar ahora?

En esta página he encontrado la forma de dialogar a través del shell (o de Perl, que es lo mismo). Aconsejan poner la orden ECHO al principio, para ver en pantalla los comandos que se están pasando.
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

Re: Ejecutar otro programa desde un programa en Perl

Notapor astrid5 » 2010-07-12 21:29 @937

El código lo obtuve de una pagina de Internet, http://bond.colorado.edu/~walter/professional/mt5.php, para utilizar otro programa para procesar unos sismogramas. El problema es que nunca había usado Perl; así comencé a leer tutoriales y entender cómo funciona el código para utilizarlo; finalmente llegué a este foro.

Gracias por la ayuda, estoy revisando la información de la página, espero resolver el problema del código.
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666

Re: Ejecutar otro programa desde un programa en Perl

Notapor explorer » 2010-07-13 03:29 @187

He revisado el código del enlace, y como te digo, yo no veo fallos en él. Debe haber otro problema.

Puedes probar a crear esa secuencia de órdenes, en un fichero de texto, y luego, mandarlas al sac, a ver si lo lee desde la entrada estándar. Por ejemplo:

cat fichero_ordenes.txt | /usr/local/sac/bin/sac

que es, básicamente, lo que está intentando hacer Perl.
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

Re: Ejecutar otro programa desde un programa en Perl

Notapor astrid5 » 2010-07-23 19:49 @867

Pues pasa lo mismo, creo que el problema es el programa SAC. Estoy revisando eso, muchas gracias por tu ayuda, este foro es muy útil, disculpa por contestar hasta ahora.
astrid5
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2010-06-16 14:59 @666


Volver a Básico

¿Quién está conectado?

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

cron