• Publicidad

Ejecutar desde Windows

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

Ejecutar desde Windows

Notapor ana gonzález ledesma » 2007-03-21 07:33 @356

Hola, normalmente ejecuto el programa que he hecho desde Linux
perl mi programa *.txt

pero ahora en este momento por circunstancias de la vida estoy en un sitio donde solo hay Windows, me meto en MSDOS y en línea de comandos pongo dentro del directorio donde están los archivos y el programa
perl mi programa *.txt

y no lo hace.
He estado buscando en Internet si en MSDOS hay algún comando para pasar el programa por un lote de archivos a la vez (y así no tengo que modificar nada) pero no encuentro la instrucción que quiero.
Ya sé que no es una duda de Perl y que es una chorrada de pregunta, pero a veces las chorradas te hacen perder muuuuucho tiempo ¿alguien lo sabe?

gracias por todo, como siempre
ana gonzález ledesma
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2006-11-02 10:25 @475

Publicidad

Notapor explorer » 2007-03-21 09:06 @420

¿Qué significa que no lo hace? ¿Da algún tipo de error? ¿No sale nada?

En cuanto a cómo convertir un programa en un lote de archivos, la distribución Perl de ActiceState viene con un programa llamado pl2bat, que transforma el .pl a un .bat, por lo que se puede ejecutar desde la línea de comandos directamente (sin escribir perl delante o quitando la extensión del fichero).
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

Ejecutar programas con archivos

Notapor ana gonzález ledesma » 2007-03-21 09:28 @436

Perdón, que no me he explicado bien cuando digo que no hace nada es que me pone lo siguiente:
Código: Seleccionar todo
can´t open *.txt: invalid argument at miprograma.pl

entonces (perdona, que no sé si me he enterado bien) ¿qué tengo que poner? Me meto en mi directorio desde MSDOS y pongo en línea de comandos:
Código: Seleccionar todo
pl2bat miprograma

¿y los textos? ¿dónde le digo que pase el programa por mis textos?

No me he enterado.

Me lo explicas otra vez, por favor.

-ana
ana gonzález ledesma
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2006-11-02 10:25 @475

Notapor explorer » 2007-03-21 10:10 @465

En MSDOS no se hace la expansión de los argumentos que sí realiza el bash shell en Linux.

Cuando pones un '*' en la línea de comandos, bash shell, antes de ejecutar tu programa Perl, hace una 'expansión' de todos los ficheros que coincidan con ese patrón. En el caso de 'perl miprograma *.txt' lo convertirá en 'perl miprograma fichero1.txt fichero2.txt fichero99.txt otro_mas.txt etc.txt'.

Pero en MSDOS, no existe eso.

En Windows hay una librería llamada setargv.obj que hace esa labor. En el Perl ActiveState hay un programa que la implementa: perlglob.exe.

También le acompaña perlglob.bat, que es aún mejor. Los dos te devuelven los ficheros que coincidan con el patrón, separados con un nulo (\0). Por ejemplo:
Código: Seleccionar todo
C:\Perl\bin>perlglob.bat *.pl
IISScriptMap.pl IISVirtualDir.pl SOAPsh.pl XMLRPCsh.pl config.pl configPPM3.pl plexalizer.pl stubmaker.pl tidyview.pl

Esto lo puedes insertar directamente en tu programa:
Código: Seleccionar todo
C:\Perl\bin>perlglob *.pl| perl -le "foreach ( split qq(\0),<> ) { print }"
config.pl
configPPM3.pl
IISScriptMap.pl
IISVirtualDir.pl
plexalizer.pl
SOAPsh.pl
stubmaker.pl
tidyview.pl
XMLRPCsh.pl
Como ves, leemos la línea de la entrada estándar con '<>' y lo dividimos (split) por el carácter nulo (\0). Por cada uno de ellos (foreach), lo pintamos (print).

De todas formas, es mucho más recomendable que modifiques tu programa para que use el módulo File::DosGlob (ver también la página de manual de perlglob y la de File::DosGlob).
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 explorer » 2007-03-21 10:20 @472

El conversor pl2bat crea un fichero .bat a partir del .pl.

A partir de ese momento, en vez de poner
Código: Seleccionar todo
perl miprograma.pl ficheros.txt

podrás escribirlo como
Código: Seleccionar todo
miprograma ficheros.txt
que es un poco más corto y claro.
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


Volver a Básico

¿Quién está conectado?

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

cron