Mostrando entradas con la etiqueta Perl. Mostrar todas las entradas
Mostrando entradas con la etiqueta Perl. Mostrar todas las entradas

jueves, 21 de agosto de 2008

Manual de Perl (IV): Datos Escalares

Después de una breve introducción a Perl, abordaremos el aprendizaje de programación en este lenguaje. Cuando escribimos un programa es por una razón: para realizar cálculos, construir una web, hacer búsquedas en archivos... En cualquier caso, lo que se pretende es resolver un problema y, si utilizamos Perl, probablemente dicho problema gira en torno a la manipulación de datos.

El tipo más básico de datos que normalmente manipula Perl son los datos escalares. El término datos escalares se refiere a un solo tipo de datos, pero abarca números y cadenas; sin embargo, por el momento, haremos una distinción entre los dos. Aprenderemos sobre los diferentes tipos de datos y comenzaremos a manejar el concepto de asignación a variables, operadores y conversiones de tipo.


Tipos de datos

Separaremos los tipos de datos en dos categorías: la primera corresponde a números como 62, 6.2e10 o 7FF. La segunda a cadenas de caracteres como "hello".

Números
Desde el punto de vista del usuario, los números normalmente se clasifican en dos tipos diferentes:

  • Entero. Es decir, un número que no es fraccionario ni mixto. Definiremos un número entero, básicamente, como un número sin punto decimal, como 63 o -1994. Los números enteros se representan por dígitos en base 10.
  • De coma flotante. Estos son, al contrario de los enteros, los números con punto decimal. Ejemplos de estos números son 63.2 o -1994e20.
Estos son los dos tipos básicos, pero también veremos otros dos tipos especiales de números: los octales y los hexadecimales. Los números octales se representan con dígitos en base 8 y los hexadecimales con dígitos en base 16.

Al contrario de la mayoría de los lenguajes de programación, en Perl los números enteros y los de coma flotante son intercambiables, simplemente porque el lenguaje no soporta enteros. En este lenguaje todos los números son convertidos a números de coma flotante aunque los ingresemos como enteros, lo cual simplifica mucho la programación, al no tener que preocuparnos por la mezcla de enteros y números decimales cuando se realizan cálculos.
Si por alguna razón necesitamos usar enteros, es posible habilitar un modo de enteros, mediante una acción que debe ser habilitada por el usuario.
Para profundizar más en la manera de operar con enteros, mirad la sección de enteros de la documentación de las bibliotecas raíz incluidas en Perl.

De todas formas no os preocupéis demasiado por no tener valores verdaderamente enteros. Casi todos tipo de cálculo funciona apropiadamente con números de coma flotante.

Veamos ahora qué formatos de números puede manejar Perl.

[Tabla]

La anotación e es el indicador de "potencia de 10". El número 4e20 se lee "4 por 10 a la 20ª potencia". Dos de los formatos de números de la tabla pueden resultarte nuevos, los hexadecimales y octales.
Los números octales se especifican con un 0 inicial. El número del ejemplo, 0543, es un número octal simplemente porque su primer dígito es 0. Debemos recordar, por tanto, que nunca debemos comenzar un valor en base 10 con el número 0, porque en nuestro script se interpretará como octal.

domingo, 26 de agosto de 2007

Manual de Perl (III): Primer programa

Ahora que ya tenemos una plantilla y algún conocimiento básico del interprete de Perl vamos a empezar a programar.


Script Hello World

Empezaremos con el programa con el que empiezan el 90% de los programadores de Perl, el "Hello World!". La idea es simple: lograr que imprima esa frase por pantalla.
En este programa utilizamos una función integrada llamada print(), que envía salidas a una localización específica. En este caso dicha localización es la salida estándar (STDOUT), es decir, la pantalla.

Para comenzar tomaremos la plantilla y la rellenaremos con nuestra información, como nombre, versión, fecha, autor y descripción. Una vez tengamos esto guardaremos el archivo como Hello.pl. Este es un programa muy simple, sólo contiene una línea de código.
#!/usr/bin/perl -w
#--------------------
#Script Name: Hello.pl
#Script Version: 1.0
#Date: 26.08.2007
#Author: goblin
#Description: Imprime "Hello World!" en pantalla
#Revision History:
# 1.0/: original version
#--------------------

print "Hello World!\n";

En próximos artículos explicaremos el caracter \n, junto con otros como él. Representa un caracter de salto de línea y hace que el cursor se ponga en la siguiente línea al ejecutar el programa. Para ver la diferencia probad con él y sin él.

Ahora, para ejecutar el programa, debemos hacer lo siguiente:

  • UNIX: Antes de nada debemos hacer el fichero ejecutable. Esto se hace con chmod 755 Hello.pl o chmod +x Hello.pl. Para más información sobre chmod teclea man chmod. Ahora podremos ejecutarlo con ./Hello.pl.
  • Windows: perl Hello.pl
  • Mac OS: Arrastrar el archivo Hello.pl y soltarlo sobre el icono MacPerl, después seleccionar Run Hello.pl desde el menú Script.
Los que programéis en otros lenguajes habréis notado que no usamos paréntesis () con la función "print()". En Perl se pueden usar o no, a nuestra elección.

Ahora que ya tenemos nuestro primer programa vamos a modificarlo para que sea un poco más interesante. Haremos un script que nos pregunte el nombre, procese la respuesta y devuelva un resultado por pantalla.
En este caso utilizaremos una nueva función llamada chomp(), que quita un caracter de nueva línea al final de una cadena. Al aceptar la entrada de datos desde la línea de comandos, el (caracter de) retorno que pulsa el usuario también se almacena en la cadena. Con el uso de chomp, eliminamos ese caracter extra de nueva línea y nos centramos solamente en los datos alfanuméricos ingresados.

Perl también tiene una función llamada chop() que quita el último caracter de una cadena. A diferencia de chomp(), chop() elimina cualquier caracter, sea cual sea, mientras que chomp() sólo elimina si es un caracter de nueva línea. Por lo que siempre que necesitemos eliminar únicamente un caracter de nueva línea es más seguro utilizar chomp().

Lo primero será obtener los datos del usuario. La manera de hacer esto es imprimir algún texto en pantalla que pida el nombre y luego leer lo que el usuario introduce, guardándolo en una variable. A esta información, que es leída a través de la entrada estándar (STDIN), se le puede aplicar fácilmente la función chomp. Como esta información está en una variable, también es fácil reutilizar dicha variable para nuestra instrucción de impresión.

# !/usr/bin/perl
#-----------------
# Script Name: Hello.pl
# Script Version: 2.0
# Date: 26.08.2007
# Author: goblin
# Description: Prompts user for name, strips of newline character
# and prints " Hello !" screen where name = the text entered.
# Revision History:
# 1.0: original version
# 2.0: added prompt for user's name and returned text based on it.
#-----------------

# ask user for name
print "What is your name? ";
$input = ;

# remove newline character
chomp($input);

# print results to page
print "Hello $input!\n";


Vemos que es posible utilizar $input dentro de las comillas de la función print.
Si hubiéramos usado comillas simples habría enviado "$input" literalmente a la pantalla.

Ahora probad vuestro programa y si tenéis alguna duda dejadla en los comentarios.

miércoles, 22 de agosto de 2007

Manual de Perl (II): Antes del código

Antes de empezar a escribir código hay una serie de tareas a tener en cuenta si queremos hacerlo correctamente. Claro que podemos simplemente abrir un editor de texto, escribir algunas líneas de código y ejecutarlo; si necesitamos algo corto, rápido y dulce podría estar bien, pero si estamos escribiendo un script que vamos a usar en el futuro o que pasará a otra persona o grupo debemos seguir algunas pautas básicas y muy recomendables:

  • Planear el flujo del programa
  • Organizarlo para poder reutilizar partes, si es necesario
  • Documentar, documentar, documentar.

Comentarios

Un comentario no es más que un texto o anotación dentro del código, el cual no es interpretado, el interprete de Perl simplemente lo ignora.
Se usa para agregar información sobre el código o secciones de éste.

Para escribir comentarios en Perl se utiliza el símbolo #. Cualquier texto después de # y hasta el final de línea es un comentario.

# Esto es un comentario

Perl no tiene marcador de comentarios multilínea, por lo que para comentar varias líneas pondremos un # al comienzo de cada una de ellas.

# Ejemplo de comentario
# multilínea.



Plantillas, un buen hábito

Una buena costumbre es realizar una plantilla que servirá de base para nuestros scripts, así conseguimos que todos los que escribimos tengan parecido y sentido consistente con la misma.
En ella deberiamos incluir información sobre quién lo escribió, cuándo, qué hace y que versión es. Además, si estamos creando cualquier subrutina en el script, también deberiamos indicar qué es lo que se debe pasar, qué se retorna y una descripción de la función.

Un ejemplo de plantilla sería:

[Encabezado del script]
#!/usr/bin/perl -w
#--------------------
#Script Name:
#Script Version:
#Date:
#Author:
#Description:
#Revision History:
# 1.0/: original version
#--------------------
[FIN Encabezado del script]


[Encabezado de función]
#--------------------
#Function
#Version Adde
#Input:
#Output:
#Description:
#--------------------
[FIN Encabezado de función]


Primera línea

La primera línea de nuestros programas debe empezar con #! y la ruta al intérprete de Perl. No siempre es necesaria pero si muy recomendable, ya que indica al programa donde debe buscar el interprete y sirve para pasarle opciones en tiempo de ejecución.
Por ejemplo, para ejecutar el script en modo Warning (y el interprete está en /usr/bin) nuestra primera línea deberia ser:

#!/usr/bin/perl -w

Esto ejecutará nuestro script activando varios warnings útiles, pero existen muchas opciones diferentes, para más información lo mejor es consultar el manual de perl.



Artículos relacionados:
Manual de Perl: Introducción

martes, 21 de agosto de 2007

Manual de Perl: Introducción

1. Introducción

Perl es uno de los lenguajes de "scripting" (LdS) actuales más conocidos y utilizados.
Se puede instalar en casi todas las plataformas y sistemas operativos existentes y es muy versátil.
Además es libre y hay miles de sitios en Internet con contenido relacionado con Perl incluyendo, por ejemplo, scripts CGI para utilizar en páginas WWW. También existen disponibles un montón de módulos (o bibliotecas) destinados a las más variadas tareas de programación (funciones matemáticas, compresión/descompresión de archivos, cifrado de información, generación/interpretación de archivos HTML y XML, comunicación, acceso a bases de datos, etc.)

La web oficial de Perl es http://www.perl.com y contiene muchos enlaces a otras fuentes de información útiles. Existe un directorio llamado CPAN ('Comprehensive Perl Archive Network'), con mirrors por todo el mundo, donde se pueden obtenet los principales módulos de extensión disponibles para este lenguaje.

Perl comparte las virtudes y defectos de otros LdS, de las que podemos destacar python, ruby, Tcl/Tk y, en menor medida ya que no es tan versátil, awk.
Es un lenguaje semi-interpretado/semi-compilado, aunque podemos considerarlo interpretado ya que no existen las fases intermedias de compilación y enlace (link) de los programas, lo que nos permite ejecutarlo inmediatamente después de escribir un programa.

El apodo de Perl es "There's more than one way to do it" (TMTOWTDI). De hecho, para hacer algo en Perl siempre hay muchas maneras.

En esta serie de artículos intentaré explicar los fundamentos de Perl intentando destacar sus ventajas en lo que a eficiencia y rapidez de escritura se refiere.