por Sobre el Author: Guido es un fan de Linux desde hace mucho tiempo y recientemente a empezado como editor de Linux Focus . Estos días está también muy ocupado renovando la casa y plantando lechuga y otras cosas en el jardín. Contenidos: |
Resumen:
Este es el primero de una serie de artículos sobre perl. No vas a necesitar ninguna experiencia especial para entender este artículo, aunque, algún conocimiento de cualquier lenguaje de programación procedural (como C o Pascal) te haría más fácil empezar con perl.
Perl es un lenguaje de script que fue desarrollado originalmente por Larry Wall. El código fuente de un programa en perl se puede "ejecutar " directamente por medio del programa perl mismo (el interprete de perl). El programa perl se suele instalar en /usr/bin/perl. Perl es en muchos aspectos bastante similar a los clásicos programas unix awk y sed pero perl ha ido mucho más ayá. Hoy puedes incluso hacer programación orientada a objetos y diseñar interfaces gráficos de usuario con perl. Perl puede extenderse facilmente en sus características mediante librerías y el archivo perl en CPAN tiene muchas de ellas. Este primer artículo no entrará de todas maneras en temas avanzados. En vez de eso me gustaría mostrar algunos de los elementos básicos y dejar cosas más avanzadas para artículos posteriores.
Perl es un lenguaje de scripting muy útil. Es una herramiente universal para cualquiera con algunas habilidades de programación.
Guarda el siguiente programa con el nombre my1stprg y entonces hazlo ejecutable con el comando
chmod 755 my1stprg . Después, ejectua el programa y mira lo que hace.
#!/usr/bin/perl -w print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); $len=length($name); print "\nHello $name! Your name is $len characters long\n"; |
Veamos el código. La primera linea no es un comentario. Es el tipo de linea empezando con "#!", típica de los scripts unix y le dice al sistema operativo que es lo que tiene que hacer con este fichero de texto. Cualquier linea después de la primera que comience con el caracter # es una linea de comentario. (p.e. la linea 4). Podemos ver también que todas las sentencias terminan con un punto y coma. Una variable empieza con un signo dollar. Las variables perl pueden tomar cadenas, enteros y números en punto flotante. Los datos se convierten automáticamente al tipo correcto dependiendo del contexto en el que la variable se use. Las variables-$ se llaman variables escalares. Perl también tiene arrays (empezando con @ en vez de $) y tablas hash (empezando con % en vez de $). Estos tipos de variables se discutiran en un artículo posterior.
La función print de la seguna linea de nuestro programa escribe una cadena de texto en la salida estandar (stdout). Es similiar al comando echo en shell scripts y las variables se expanden a sus valores si la cadena se encierra en comillas dobles. Las variables en el interior de comillas simples no son expandidas y se puede usar un backslash (\) para citar (entrecomillar, escapar) caracteres especiales como el signo del dolar o una comilla dentro de comillas. Aquí tienes un ejemplo:
#!/usr/bin/perl -w $name="joe"; print "1 $name\n"; print '2 ', $name , "\n"; print '3 ', '$name',"\n"; print "4 \"$name\"\n"; print "5 \$name\n"; print "6 \"\$name\"\n"; |
This will produce:
1 joe 2 joe 3 $name 4 "joe" 5 $name 6 "$name" |
De vuelta a nuestro primer sencillo programa. La linea $name=<STDIN>; ofrece al usuario un prompt para la entrada de datos y espera hasta que el/ella teclean la tecla return. Después de esa linea la variable $name tiene o que el usuario escribio incluyendo el carácter de fin de linea. La sentencia chomp($name), elimina este carácter de nueva linea de la variable $name. Finalmente la función lenght cuenta el número de caracteres en $name.
Desafortunadamente nuestro programa tiene un error (un bug). ¿Qué ocurre si pulsas tab o espacio después de tu nombre? Este también será contado. ¿Cómo podemos solucionarlo?
Lo que necesitamos es algún tipo de función de busqueda y reemplazamiento que elimine cualquier espacio en blanco del nombre. Perl es muy bueno manipulando cadenas de texto y ofrece exactamente eso. [ \t] es una expresión regular que coincide (match) con espacios y tabuladores. En perl esto también se puede abrebiar y escribir como \s. (Aquí se puede leer más acerca de expresiones regulares). El comando se sustitución de perl toma una expresión regular y tiene la sintaxis: $name=~ s/regexp/replacement/g; Si dejamos la cadena de reemplazo vacia entonces todas las ocurrencias donde encaje la expresión serán reemplazadas con nada. Ahora el programa se vería como:
#!/usr/bin/perl -w print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); print "\nHello $name!"; #remove spaces from the string: $name=~s/\s//g; $len=length($name); print " Your name is $len characters long\n"; |
Este no es un programa muy útil dado que no tiene ninguna sentencia de control (bucles y sentencias if) pero nos da una idea básica. Esta seríe continuará y llegaremos a programas más complicados pronto.
También puedes probar "man perl" y "man perlfunc" para ver que funciones están disponibles. De todas maneras, todo esto es material de referencia y para aprender perl deberías seguir este tutorial o leer un libro como "Learing Perl" from O'Reilly.
Contactar con el equipo de LinuFocus © Guido Socher LinuxFocus 1999 |
Translation information:
|
1999-05-23, generated by lfparser version 0.6