• Publicidad

Paso de parámetros entre scripts y retorno de datos

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

Paso de parámetros entre scripts y retorno de datos

Notapor usarioma » 2009-08-25 22:24 @975

¿Cómo hago para pasar parámetros de un script a otro?

Tengo dos scripts: script1.pl y script2.pl.

En cierta parte del código de script1.pl quiero que ejecute script2.pl con ciertos parámetros; una vez que termine de ejecutarse script2.pl, quiero que retorne un valor y luego continúe ejecutándose script1.pl donde se quedó y de acuerdo al valor retornado por script2.pl ejecutar distintas tareas.

¿Cómo hago eso?
Última edición por explorer el 2009-08-26 04:34 @231, editado 3 veces en total
Razón: Ortografía. Esto es un foro, no un teléfono móvil.
usarioma
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-08-25 22:08 @964

Publicidad

Re: Paso de parámetros entre scripts y retorno de datos

Notapor explorer » 2009-08-26 04:32 @230

Puedes probar a ejecutar el segundo programa con la ayuda de qx() o de las backticks (``), y obtener la salida y luego decidir qué hacer:

kk.pl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. print "Haciendo algo\n";
  7.  
  8. my $resultado = qx[ ./kk1.pl 2 ];
  9.  
  10. if ($resultado == 1) {
  11.     print "Hacemos un 1\n";
  12. }
  13. elsif ($resultado == 2) {
  14.     print "Hacemos un 2\n";
  15. }
  16.  
  17. print "Haciendo otra cosa\n";
  18.  
  19. __END__
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

kk1.pl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my $argumento = shift @ARGV;
  7.  
  8. print $argumento;
  9.  
  10. __END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Actualización: puesto el ejemplo de paso de parámetros.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Paso de parámetros entre scripts y retorno de datos

Notapor usarioma » 2009-08-26 10:48 @492

¿Qué es lo que hace la función qw()?

¿Cómo hago para retornar una variable desde el segundo script? ¿return() y nada más?

¿Para que sirve __END__?

También vi usar de esta manera:
use POSIX qw/ strftime /;
Última edición por explorer el 2009-08-26 12:13 @550, editado 1 vez en total
Razón: Ortografía. Se escribe 'que', no 'q'. Esto es un foro, no un teléfono móvil.
usarioma
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-08-25 22:08 @964

Re: Paso de parámetros entre scripts y retorno de datos

Notapor explorer » 2009-08-26 12:22 @557

usarioma escribiste:¿Qué es lo que hace la función qw()?

También vi usar de esta manera:
use POSIX qw/ strftime /;

qw() sirve para delimitar una lista de palabras. Es decir, que
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @palabras = ( '12', 'abuela', '45', 'casa' );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

se puede escribir de forma más cómoda así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @palabras = qw( 12 abuela 45 casa );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o incluso así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @palabras = qw(
    12  abuela
    45  casa
);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En cuanto a los delimitadores, se pueden usar varios:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @palabras = qw( 12 abuela 45 casa );
my @palabras = qw[ 12 abuela 45 casa ];
my @palabras = qw{ 12 abuela 45 casa };
my @palabras = qw/ 12 abuela 45 casa /;
my @palabras = qw" 12 abuela 45 casa ";
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y así.

usarioma escribiste:¿Cómo hago para retornar una variable desde el segundo script? ¿return() y nada más?
Depende de como se haya hecho la llamada. No es lo mismo haberlo ejecutado con un do(), que haber importado funciones con use() o require(). Presenta algo de código y te diremos.

usarioma escribiste:¿Para que sirve __END__?

Para separar la zona del programa de otra zona que el compilador no mirará. Se puede usar para dejar allí comentarios, documentación, código viejo, código sin usar...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Paso de parámetros entre scripts y retorno de datos

Notapor adrolmar » 2009-08-31 04:25 @225

¡Buenas!

Al hilo de la cuestión... ahora digo yo, ¿cómo se haría para invocar a otro cgi y finalizar (sin retornar al cgi invocante)?

Por ejemplo, un cgi llamado login.cgi que valida usuario/contraseña y cuando éstos sean correctos lance otro script CGI y acabe.

¡¡Gracias!!
adrolmar
 

Re: Paso de parámetros entre scripts y retorno de datos

Notapor explorer » 2009-08-31 04:27 @227

Con exec().
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Paso de parámetros entre scripts y retorno de datos

Notapor adrolmar » 2009-08-31 05:41 @278

¡Muchas gracias!
adrolmar
 


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron