• Publicidad

Ayuda con intérprete de Perl en Windows

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

Ayuda con intérprete de Perl en Windows

Notapor Neo Krebs » 2013-03-25 23:37 @026

Hola, me registré hace poquito. Tengo una duda/problema. Pido perdón si esto ya está en otro tema, pero no lo encontré. Estoy comenzando con Perl. Tengo Windows 7 e instalé Perl según el tutorial.

Cuando ejecuto perl.exe escribo en esa terminal algunos códigos, pero no me devuelve resultados. Es decir, si escribo:

print 'Hola Mundo';

No me devuelve nada. ¿Me explico bien?

Si lo escribo mediante un archivo de texto, y lo guardo como .pl y luego lo ejecuto en la terminal de Windows sí funciona.

¿Estoy haciendo algo mal?
¡Gracias!
Neo Krebs
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-03-23 20:12 @883

Publicidad

Re: Ayuda con intérprete de Perl en Windows

Notapor explorer » 2013-03-26 05:32 @272

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

El comando completo, en Windows, sería así:

perl -e "print 'Hola Mundo'"

Es decir, las comillas que deben rodear al programa deben ser las comillas dobles, para "escapar" el contenido del programa de la influencia del entorno de línea de comandos del CMD.

Es fácil acordarse: en Windows, las comillas significan lo contrario que en UNIX/Linux. Solo por llevar la contraria. :lol:

Pero eso influye fuertemente en Perl, ya que son solo las comillas dobles las que hacen la interpolación de su contenido.

Entonces, si quisiéramos imprimir 'Hola Mundo' junto con un nueva línea, no podríamos escribir esto:

perl -e "print 'Hola Mundo\n'"

sino algo así:

perl -e "print qq(Hola Mundo\n)"

El operador qq() hace las mismas funciones que las comillas dobles. Y Perl ve que dentro hay un "\n", así que lo transforma a un nueva línea.

Teniendo en cuenta estas dos salvedades, el resto debería ser casi igual a los ejemplos en UNIX/Linux que comentamos por estos foros.

P.D. Con un Perl moderno (igual o superior a v5.10), se puede abreviar en:

perl -E "say 'Hola Mundo'"
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con intérprete de Perl en Windows

Notapor Neo Krebs » 2013-03-26 10:47 @491

Gracias por tu respuesta, pero no es a eso a lo que me refiero. El "hola mundo" fue un ejemplo.

Tal vez me expresé mal.

Si ejecuto desde el Símbolo del Sistema, un archivo .pl, éste me lo ejecuta.
Pero si quiero poner ese código en perl.exe; no me devuelve el 'hola mundo':
Imagen


Perl.exe no me "devuelve" lo que le ordeno.

En cambio, el interpretador de Ruby sí me lo devuelve.
Imagen

(Doy el ejemplo de Ruby, porque comencé a trabajar en él, pero mudé a Perl)

Seguramente algo estoy haciendo mal. No debe ser perl.exe sino ¿otro programa?

Es muy básico esto, recién me estoy iniciando.

¡¡Gracias!!
Neo Krebs
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-03-23 20:12 @883

Re: Ayuda con intérprete de Perl en Windows

Notapor explorer » 2013-03-26 11:21 @514

A ver, varias cosas:

Perl no tiene un modo "interactivo", como Ruby o Python. Lo más aproximado que hay es ejecutarlo en modo depuración:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl -d -E 1

Loading DB routines from perl5db.pl version 1.37
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(-e:1):   1
  DB<1> print "Hola Mundo\n"
Hola Mundo

  DB<2>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Se puede tener un modo interactivo con algún módulo que sí existe en CPAN (ahora no recuerdo cómo se llama).

En cuanto a tu experimento, lo que está ocurriendo es que perl se está quedando a la escucha (leyendo la entrada estándar) como si tu teclado fuera el contenido de un archivo. Y no lo ejecutará hasta que encuentre una marca de fin de archivo.

Yo no uso Windows hace muchos años, pero en Linux el comportamiento es igual:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl
print "Hola Mundo\n";

Hola Mundo
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Ahí no se ve, pero justo después de meter la línea del print() (después de pulsar la tecla Entrar), he pulsado Control-D para indicarle al shell que no voy a seguir escribiendo ahí, así que quiero que cierre ese flujo, y que lo que acabo de escribir se lo pase a la entrada estándar de perl, que como ves, lo ejecuta inmediatamente.

Lo que sí puedes hacer es ejecutar mini programas en la misma línea de comandos:

perl -E "say 'Hola Mundo';"
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con intérprete de Perl en Windows

Notapor Neo Krebs » 2013-03-26 12:20 @555

Claro. Buscaba algo al estilo "modo depuración".

La última pregunta, ya que no tiene "modo interactivo", recomiendame alguna manera de ir aprendiendo Perl por prueba y error. Lo que se me ocurre es ir escribiéndolo y guardándolo en "archivo.pl" y luego ejecutarlo. ¿Existe alguna otra manera, más dinámica?

¡Muchas Gracias!
Neo Krebs
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-03-23 20:12 @883

Re: Ayuda con intérprete de Perl en Windows

Notapor explorer » 2013-03-26 17:31 @771

Hay varias formas.

Lo más rápido, para mi, es con ayuda del editor vim (otros editores también lo permiten) puedes editar el programa y con una combinación del teclado se manda ejecutarlo. También con el Eclipse+EPIC se puede mandar ejecutar.

Otra forma sencilla, y más dinámica, es usar algún tipo de divisor de pantalla, como el comando screen o el tmux (o usar dos ventanas separadas de líneas de comandos). En una ventana estoy editando el programa, y en la otra, estoy ejecutando el comando

watch -n 3 programa.pl

que es un comando de Linux que ejecuta 'programa.pl' cada tres segundos. De esa manera, cada vez que grabo el archivo en la primera ventana, veo el resultado casi de forma inmediata, en la otra ventana.

Si quieres algo más interactivo, pues eso está respondido en el perlfaq3, en donde se comenta mi primera respuesta (usar el modo depuración), o usar el módulo Devel::REPL, que es *justo* lo que estás buscando :) Con ejecutar el script que trae, el re.pl, ya tienes un Perl interactivo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con intérprete de Perl en Windows

Notapor Neo Krebs » 2013-04-05 13:19 @597

¡Muchas Gracias!
Neo Krebs
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-03-23 20:12 @883


Volver a Básico

¿Quién está conectado?

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