• Publicidad

Ejecutar un programa de Perl dentro de otro

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

Ejecutar un programa de Perl dentro de otro

Notapor Alfumao » 2011-04-04 09:09 @422

Hola a todos,

¿Cómo he de hacer para ejecutar un programa de Perl dentro de otro? ¿Usando "require"?

¿Cómo le paso al programa los parámetros, si lo quiero usar como si fuera una subrutina dentro de otro programa?

Imaginemos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #[Bloque de programa]
  2. &subrutina1;# Habría de incluir el resultado en una variable tipo $sub1=&subrutina1;
  3.  
  4. require"programa2.pl"; # ¿cómo paso los resultados del retorno de la subrutina anterior
  5.                        # para que sean usado por el programa2?
  6.  
  7. print "resultados2" # ¿cómo imprimo los resultados obtenidos del uso de programa2.pl?
  8.                     # ¿en una variable $resultados2=require"programa2.pl"?
  9.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


No sé si me habéis entendido. Supongo que es algo básico, pero es que no sé cómo enfocarlo...

Un saludo
Alfumao
Perlero nuevo
Perlero nuevo
 
Mensajes: 178
Registrado: 2009-12-10 11:20 @514

Publicidad

Re: Ejecutar un programa de Perl dentro de otro

Notapor explorer » 2011-04-04 10:09 @464

Una cosa es incorporar el código de otro fichero Perl, en el nuestro (por lo que, a partir de ese momento, las variables y funciones de ese fichero formarán parte de nuestro espacio de nombres, y podremos ejecutar y acceder a ellos como si fuera el nuestro); y otra cosa es ejecutar un programa Perl externo (en ese caso, le pasamos unos argumentos, lo ejecutamos, y nos da una salida).

Para el primer caso, hay que usar: do(), use o require.

para el segundo caso, system(), exec, qx() y ``.

Cada uno tiene sus ventajas e inconvenientes.

Si solo vas a ejecutarlo una sola vez, el programa externo, entonces te vale la segunda solución.

Si el programa externo tiene variables y funciones (unas cuantas), y puede que las ejecutes o no, en distintos momentos, entonces es mejor usar la primera.
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 un programa de Perl dentro de otro

Notapor pvaldes » 2011-04-05 05:36 @275

Exacto, una vez que pones use o require ya tienes disponibles todas las variables del programa al que se invoca desde el script principal, SALVO que estén definidas como my() dentro de algún bucle y traten de llamarse luego desde fuera del bucle o que sean redefinidas en el script principal, si dos variables tienen el mismo nombre en ambos scripts puedes tener problemas y no obtener lo que esperas.

De todos modos parece que estás haciendo el proceso inverso.

En tu ejemplo deberías cargar el programa 1 (invocarlo) desde el programa 2, no al revés.
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580


Volver a Básico

¿Quién está conectado?

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