• Publicidad

Guardar resultado con system()

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

Guardar resultado con system()

Notapor miguialberto » 2008-09-22 05:02 @251

Buenas de nuevo.

Creo que este problema lo he leído ya resuelto en algún lado, pero no lo encuentro. Quería saber cómo puedo guardar la salida de una llamada a "system()". Por ejemplo, si uso system() para hacer un "dir" de un directorio, querría que se me guardara el resultado de todos los directorios listados en un string, de manera que luego los pudiera consultar.

¡Gracias!
miguialberto
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2008-07-28 06:13 @301

Publicidad

Notapor explorer » 2008-09-22 05:40 @277

Debes usar qx(), en lugar de system(), que solo te da el resultado de la ejecución.

De todas formas, para leer un directorio, yo usaría opendir(), readdir() y closedir().
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

Notapor miguialberto » 2008-09-22 05:43 @280

Muchas gracias, me funciona perfectamente.
miguialberto
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2008-07-28 06:13 @301

Notapor Leo_Gutierrez » 2008-10-11 20:33 @897

Bueno yo estoy empezando en Perl, pero creo que sería así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
system("dir > archivo.txt");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La salida del DIR se va hacia el archivo "archivo.txt".
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Notapor explorer » 2008-10-11 21:20 @931

Bienvenido a los foros de Perl en Español, RockoX.

Gracias por la apreciación, RockoX, pero miguialberto pedía guardar la salida de la ejecución del comando en una variable escalar, no en un fichero externo.

Para eso se suele usar qx():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $directorio = qx( dir );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
o las comillas invertidas (``) que es lo mismo.
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

Notapor Leo_Gutierrez » 2008-10-11 23:38 @026

Disculpen, no leí bien. Una pregunta: ¿esto sería correcto, guardar la salida del comando "dir" en una variable?
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
my $directorio = system("dir /b");
printf $directorio;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Otra cosa, cuando ejecuto el script, me da esta salida:
Código: Seleccionar todo
Code.pl
Code.vpd
0


Pero ¿qué significa el 0 en la última línea, el grado de error?

Pongo esto en la línea de comandos y me sigue dando un 0:
Código: Seleccionar todo
perl code.pl & echo %errorlevel%


Y ahora me da esta salida en la consola :
Código: Seleccionar todo
Code.pl
Code.vpd
00


Esa es básicamente mi pregunta, por qué me devuelve un 0.
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026

Notapor explorer » 2008-10-12 08:14 @385

system() devuelve el resultado de la ejecución de la operación, así que de ahí viene el cero. No estás guardando la salida del comando. Solo estás guardando un cero. Si ves la salida del comando en pantalla es porque no estás capturando nada y la salida sale por la salida estándar (la consola).

Y otro detalle... no es lo mismo print() que printf(). El segundo requiere de un parámetro con el formato de salida.
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

Notapor Leo_Gutierrez » 2008-10-12 10:47 @491

Gracias, duda aclarada.
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 0 invitados

cron