Bienvenido a los foros de Perl en Español, joralastair.
Supongamos que el primer programa es este:
Using perl Syntax Highlighting
#!/usr/bin/perl
exit(42);
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Entonces, podemos ejecutarlo desde otro programa y obtener su resultado:
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14;
my $res = system('/usr/bin/perl', '1.pl');
say "Valor devuelto: ", ($res >> 8); # 42
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
El desplazamiento de 8 bits es necesario porque el resultado viene empaquetado en dos bytes (más información en
perldoc -f system).
Otra forma de hacerlo: Cargando el primer programa dentro del primero y ejecutarlo como un
script Perl:
Using perl Syntax Highlighting
#!/usr/bin/perl
# Un programa Perl que solo hace una cosa: devolver 42 como última instrucción ejecutada
42;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14;
my $res = do '1.pl';
say "Valor devuelto: $res";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Más información en
perldoc -f do (o
perldoc perlfunc y buscar la sección de 'do').
Y una tercera: Ejecutar el primero y capturar su salida estándar:
Using perl Syntax Highlighting
#!/usr/bin/perl
print "42";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14;
my $res = qx(/usr/bin/perl 1.pl);
say "Valor devuelto: $res";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Más información en tu propio ordenador en
perldoc perlop,
y en la Web (
traducido al español), sección
Comillas y Operadores de comillas.