• Publicidad

Parámetros

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

Parámetros

Notapor mpm_maru » 2007-01-03 15:40 @694

Hola a Todos,

Me gustaría que me ayudaran, quisiera saber como se pueden mandar parámetros a otro script que se llama a través de la función system...

ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system('c:/KPI/pasantia/Scrips/detalle.pl');
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


De verdad les agradecería mucho si me ayudasen

gracias
mpm_maru
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2007-01-03 11:58 @540

Publicidad

Notapor explorer » 2007-01-03 16:44 @739

Pues...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system("programa.pl","argumento1","argumento2");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-01-03 16:47 @741

No se como sea en Windows pero puede que esto...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
system('exec c:\KPI/pasantia/Scrips/detalle.pl parámetro');
if($? == -1){
  die "No se pudo ejecutar $!\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Por qué no usas open, puede funcionar?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Perl user » 2007-01-03 17:39 @777

creating021 escribiste:No se como sea en Windows pero puede que esto...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
system('exec c:\KPI/pasantia/Scrips/detalle.pl parámetro');
if($? == -1){
  die "No se pudo ejecutar $!\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Por qué no usas open, puede funcionar?


Al contrario... tu solución no tiene que ver con un sistema, estás generando 2 procesos por cada system.

system() genera una nueva imagen de proceso y exec genera otra nueva imagen de proceso sobreescribiendo la actual (incluyendo el stack).

La solución mas correcta y la mas "portable" es la que da explorer arriba. Utilizar system( @args ).

Independientemente de que tu solución funcione... no es la mas eficiente y sobre todo no es portable.

Saludos,

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor creating021 » 2007-01-03 18:13 @800

Cierto, pero lo de exec tiene una razón y es el mal que tengo:
Cuando ejecutas algo en Unix (ls, make, mv, rm...) usualmente haces un system con el nombre del programa (el path ya está en sistema exportado por Bash, sh, csh...) pero cuando es el X path uso exec o depende del programa lo uso (Al ver tengo que leer perldoc).

Pero, que tal si sólo se usa exec de esta forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $path = '/bin/lo_que_sea';
exec $path '-args';
exec {'lo_que_sea} '-args';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Mhh, veo que exec y system es lo mismo.
¿Cúal sería la mejor forma, system(@rray) o exec(@args)?
:shock:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Perl user » 2007-01-04 11:28 @519

creating021 escribiste:Cierto, pero lo de exec tiene una razón y es el mal que tengo:
Cuando ejecutas algo en Unix (ls, make, mv, rm...) usualmente haces un system con el nombre del programa (el path ya está en sistema exportado por Bash, sh, csh...) pero cuando es el X path uso exec o depende del programa lo uso (Al ver tengo que leer perldoc).

Pero, que tal si sólo se usa exec de esta forma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $path = '/bin/lo_que_sea';
exec $path '-args';
exec {'lo_que_sea} '-args';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Mhh, veo que exec y system es lo mismo.
¿Cúal sería la mejor forma, system(@rray) o exec(@args)?
:shock:


Que tal,

En mi post anterior te expliqué ya la diferencia.

system() genera un nuevo proceso y ejecuta el comando dado SIN reemplazar la imagen de proceso actual (la ejecución del programa actual en Perl).

exec() Es una llamada al sistema que ejecuta el comando dado reemplazando la imagen de proceso actual con la del comando a ejecutar (es decir, en la tabla de procesos del sistema operativo, los datos de la ejecución actual son sobreescritos por el proceso a ejecutar, pila, direcciones, file descriptors, etc).

Ambos tienen su uso.

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924


Volver a Básico

¿Quién está conectado?

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