Viéndole las tripas al producto

Ejecutando el programa paso a paso

Mucho editar, mucho editar, pero de ejecutar programas nada de nada. Lo que hemos editado no deja de ser un fichero de texto, así que para ejecutarlo tendremos que llevar a cabo algún encantamiento para meterlo en el corredor de la ejecución.

Tampoco hace falta. Lo más universal es irse a un intérprete de comandos, colocarse en el directorio donde hayamos salvado (de la eterna perdición) el fichero, y escribir perl hola.pl. Pero ya que estás puesta (o puesto), puedes hacer algo más: escribir chmod +x hola.pl, lo que convertirá al fichero en ejecutable, es decir, en algo que podemos correr simplemente tecleando su nombre, de esta forma:

jmerelo@vega:~/txt/tutoriales/perl-apresurados/code$./hola.pl
Daban en Madrid, por los fines de julio, las once de la noche en punto, hora menguada...
Pero el encantamiento este actúa también a otros niveles, pudiendo ejecutar el programa directamente desde esos inventos del averno llamados entornos de ventanas, como se muestra en la figura siguiente.

Figura 5. Ejecutando un programa en Perl desde Gnome

Como el Nautilus, el manejador de ficheros de Gnome es muy listo, se dice a si mismo (pero bajito): Pardiez, este fichero es ejecutable. ¿Qué puedo hacer con él? ¿Lo ejecuto? ¿Lo abro sin ejecutarlo? La duda me carcome. Se lo preguntaré al honorable usuario. El menú contextual (con el botón derecho del ratón) nos ofrecerá opciones similares. El problema es que si lo ejecutamos será visto y no visto: abrirá una ventana, escribirá el texto y saldrá como una exhalación.

Vamos a dejar entonces que el programa se quede clavado hasta nueva orden, con una pequeña modificación, que aparece en el siguiente listado

    #!/usr/bin/perl
    print "A estas horas, el Estudiante, no creyendo su buen suceso y
    deshollinando con el vestido y los ojos el zaquizamí...\n"; 
    sleep 10;  # Quieto parao ahí

Que, con un poco de suerte, nos permitirá capturar una pantalla como la siguiente:

Figura 6. Terminal con el resultado de ejecutar el programa hola-y-duerme.pl

En otros sistemas operativos (o entornos), cambiará el icono y la apariencia del terminal donde está el resultado, pero por lo demás, el resultado será el mismo (y el sonriente camello, también). La única diferencia con el primer programa es la última línea, que le indica al programa que se quede quieto parao (dormido, de hecho) durante 10 segundos. Y que diga cheeeeeese (solo en ordenadores con interfaz gestual y/o emocional y/o audiomotriz/parlanchín).

Por cierto que, de camino, hemos introducido nuestro primer comentario, que en Perl van precedidos por una almohadilla (#) y llegan hasta el final de la línea. Un buen programador debe ser un buen comentarista. Lo contrario no siempre es cierto.

Pero incluso así, puede que sea demasiado rápido para apreciar la sutileza de cada una de las órdenes, y haya que ejecutarlo paso a paso. Más adelante tendrás que depurar tus programas, porque cometerás errores, si, errores y tendrás que corregirlos sobre la marcha. De la forma más inteligente, además. Pero no hay que preocuparse, porque Perl tiene un depurador integrado. Ejecuta el programa de esta forma:

jmerelo@vega:~/txt/tutoriales/perl-apresurados/code$
perl -d hola-y-duerme.pl
Loading DB routines from perl5db.pl version 1.28
Editor support available.

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

main::(hola-y-duerme.pl:3):     print "A estas horas, el Estudiante, no creyendo su buen suceso y
main::(hola-y-duerme.pl:4):     deshollinando con el vestido y los ojos el zaquizamí..\n"; 
  DB<1> 

La opción -d del intérprete te introduce en el depurador, así, sin más prolegómenos. A partir de esa línea de comandos, puedes evaluar las expresiones de Perl que quieras, y, por supuesto, depurar el programa, ejecutándolo paso a paso, mirando variables, y todo ese protocolo inherente al mester de la programación. Para empezar, vamos a ejecutarlo pasito a pasito.

DB<1> R
Warning: some settings and command-line options may be lost!

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

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

main::(hola-y-duerme.pl:3):     print "A estas horas, el Estudiante, no creyendo su buen suceso y
main::(hola-y-duerme.pl:4):     deshollinando con el vestido y los ojos el zaquizamí..\n"; 
, lo que empieza a hacerse ya un poco repetitivo. La orden R comienza a ejecutar el programa. En realidad, antes lo único que habíamos hecho es indicarle (educadamente) al depurador el programa que íbamos a depurar, que se ha cargado, interpretado y mirado a ver si hay errores de sintaxis; ahora es cuando lo estamos ejecutando en serio. Bueno, todavía no, porque en este punto todavía no hemos ejecutado ni siquiera la primera línea. La salida del depurador nos indica main::(hola-y-duerme.pl:3): la siguiente línea del programa (3) que vamos a ejecutar (y la 4 de camino, que para eso la orden ocupa dos líneas).
  DB<0> n                                                           (1)
A estas horas, el Estudiante, no creyendo su buen suceso y
deshollinando con el vestido y los ojos el zaquizamí..
main::(hola-y-duerme.pl:5):     sleep 10;                                                           (2)
(1)
n, de next, siguiente, ejecuta la línea ídem, es decir, justamente la que aparece al final de el ejemplo anterior
(2)
Ésta es la salida de esa línea en particular; lo que hace es escribir lo que se encuentra entre las comillas.
(3)
Y muestra la línea siguiente a ejecutar.

Como persona precavida vale por dos diablillos, no es mala idea tener siempre el depurador abierto para ir probando cosas; puedes usar, por ejemplo, la línea perl -de0, que te deposita directamente en el depurador sin ejecutar ningún programa. Te ahorrará más de una vuelta al editor a reescribir lo que ya está escrito. Además, es muy fácil. Si has elegido Un Buen Editor (o sea, el XEmacs) y te ha reconocido el programa como un fichero Perl, tendrás una opción del menú llamada perl; desplegando ese menú, te aparecerá la opción debugger, eligiéndola te dará un resultado similar al que se muestra en la siguiente captura de pantalla:

Figura 7. Depurando un programa en el mismo editor XEmacs. La flecha está situada sobre la siguiente línea a ejecutar.

Desde este depurador se trabaja de la misma forma que en la versión de la línea de comandos, pero se pueden colocar puntos de ruptura usando el ratón, por ejemplo y puedes ver las líneas que se están ejecutando en su contexto.

Figura 8. Menú específico del modo CPerl para XEmacs, mostrando las diferentes opciones, incluyendo la de depuración y otras cuantas que posiblemente no uses nunca.

Con esto, ya estamos listos para abordar empresas más elevadas que nos llevarán mucho más lejos.

Importante

Ejercicios. Familiarizarse con el depurador, creando un programa con las dos o tres cosas que se conocen y viendo las diferentes órdenes; por ejemplo, cómo ejecutar un programa sin parar, o hasta una línea determinada y cómo hacer que la ejecución se pare en una línea. Recuerda, h es tu amiga.