#-=PERL=-#
Bueno, vi el manual de Python de TxShack y me interesó su comentario acerca de Python vs Perl ... No te enojes, no es competencia, pero se me dio por hacer éste mini-manual de Perl ya que AMO a este lenguaje desde la primera vez que lo use...
Me interese por PERL cuando en uno de los conocidos manuales de hacking (mayormente) inofensivo leí la frase:
"PERL es el Lenguaje Amigo-Del-Hacker"
Desde entonces paso un largo tiempo hasta que agarré un manual de Perl... pero desde la primer aplicación no dejé de usarlo compulsivamente hasta hoy.
Creado en 1987 por Larry Wall como herramienta que llenaba los huecos dejados básicamente por AWK y SED. Ha influido a Python, PHP, Ruby, ECMAScript entre otros, corre en gran cantidad de Sistemas Operativos, se distribuye bajo la Licencia Artística o bajo la GPL.
Quisiera agregar que NO Abarcare todo el lenguaje ni sus trucos ni mucho menos, ya que Perl es uno de los lenguajes más extensos que conozco. En todo caso, hay interminable documentación incluida en perldoc (y cuando digo interminable hablo en serio).
Perl es un lenguaje complejo, MUUUY AMPLIO que ofrece un sinfin de posibilidades de las más variadas.
Para que sirve PERL?:
No es por ser mala onda pero si todavía tenés ésta duda ¡LEE LO ANTERIOR! - Perl sirve prácticamente para todo lo que desees. La inmensa cantidad de módulos que se han programado para Perl lo hace un lenguaje Amplio y Ampliable.
Pero a todo ésto ¿Como es PERL?:
Su sintáxis es muy similar a la de C, pero a diferencia de éste, Perl no es tan estructurado, y yá en éste punto es necesario mencionar el lema de Perl : "SIEMPRE HAY MÁS DE UNA FORMA DE HACERLO"... y eso es marca registrada. Cuando escribes Perl puedes elegir entre miles de formas de hacer lo mismo.
Otra cosa a saber es que "SEGURAMENTE ALGUIEN YA HIZO UN MÓDULO PARA LO QUE NECESITO".
Perl es un lenguaje muy extensible y es en gran parte gracias a los módulos. No veremos ahora esa parte específicamente, pero basta saber que los módulos nos facilitarán la vida muchísimo, al punto que ejecutar comandos en una máquina remota se vuelve cuestión de unas cuantas líneas... creando una conexión en unas eficaces dos o tres líneas ( o_O ).
Empecemos por una básica comparación C - C++ -Perl :
Hola mundo en C
Código
#include <stdio> int main(void) { }
Hola Mundo en C++
Código
#include <iostream> int main(void) { cout << "Hola mundo!\n"; }
Hola Mundo en Perl
Código
O bien podemos usa el SheBang para invocar al interprete de Perl, o bien para invocar una versión específica, o pasar parámetros a dicho intérprete en caso de querer que sea ejecutado de otra forma, o bien muchas cosas que pueden ver en la página correspondiente de perlrun, aqui: http://perldoc.perl.org/perlrun.html#DESCRIPTION
Y empiezan nuestras posibilidades ilimitadas con Perl... ya que podríamos usar éste modo:
Código
#!/usr/bin/env perl -W use strict;
Y entonces introduciríamos el control de calidad del pragma strict, con el que, por ejemplo, no podremos inicializar una variable sin usar my.
Citar
En general lo que hace la directiva sctrict es generar errores al programas en caso de que se encuentre lo que pueda considerar "programación insegura"
A demás usamos el parametro -W con lo que activamos todas las advertencias (Warnings).
Pueden encontrar mucha información de PERL en wikipedia...
UNA INTRODUCCION
Pero empecemos con algo útil... una de las mayores capacidades de Perl es Escribir y Leer ficheros (Aunque no haya sido su significado desde un principio, actualmente Perl se conoce por las siglas Practical Extraction and Report Language... a tal punto que es la cabecera de su página de manual de Unix)
Para abrir un fichero en Perl hay que usar open()... y otra vez, recuerden que HAY MAS DE UNA FORMA DE HACERLO, tal es así que entre la documentación de perl encontramos una página llamada perlopentut en la que encontraremos muchos trucos acerca de la apertura de ficheros. Para usuarios de sistemas Unix (ej: Linux) pueden abrir una terminal y escribir perldoc perlopentut. Usuarios de debian o sistemas similares (ej: ubuntu) necesitaran instalar el paquete perl-doc
lo cual pueden hacer mediante el comando sudo apt-get install perl-doc.
Pueden ver una lista de la enorme cantidad de documentacion disponible con el comando man perl o perldoc perl.
NOTA: Perl es una herramienta diseñada para sistemas UNIX aunque hoy en día soporta múltiples plataformas. Para correr Perl debes tener instalado el intérprete de Perl. Puedes visitar www.perl.com o www.perl.org para ver lo referente a tu sistema operativo. La documentación del comando perldoc incluye notas para muchos sistemas distintos, ver la lista en perldoc perl
Pasemos al grano:
UNA FORMA DE ABRIR Y ESCRIBIR UN FICHERO EN PERL:
Código
#!/usr/bin/perl -W # Esto es un comentario, lo que viene es la variable con la ruta... my $Ruta_Fichero="/home/d4rio/perlscripts/utils/escribime.text"; # Ahora abro el fichero para escribirlo...
Hasta ahi es suficiente para que expliquemos algo:: lo que sigue a open es el identificador del fichero (filehandle). Usaremos ese identificador para referirnos al fichero abierto en adelante. El signo ">" que usamos significa que escribiremos en el fichero. Es simple, se usan las mismas notaciones que usaríamos en la consola, por ejemplo, en una consola de UNIX, ésto:
Código
echo "Escribo algo" > nombre_de_fichero;
...sería mandar la salida de ese comando a "nombre_de_fichero"... pero NO CONTINUANDO. En DOS o la consola de Windows es igual:
Código
echo "Hola, como andan?" > archivo.txt
...escribiría "Hola, como andan?" en el fichero "archivo.txt" pero NO CONTINUANDO
NOTA: Con "NO CONTINUANDO" me refiero a que si el archivo contenía algo será borrado en vez de continuar al final del fichero.
Para abrir un archivo se pueden usar varios modos:
Modo de lectura: Lee el fichero | < |
Modo de escritura: Sobreescribe el fichero (si habia algo lo borra) | > |
Modo de escritura: Escribe al final del fichero | >> |
Pero se puede usar una tubería para pasar la salida de un comando a nuestro programa como si leyeramos un fichero, o bien pasar todo lo que escribamos en el identificador a un comando.
Si desean ver los miles de usos de open vean perldoc perlopentut
Ahora iremos pidiendo los datos de una persona y al final los meteremos en un fichero:
Código
#!/usr/bin/env perl # PIDO LOS DATOS $APELLIDO=<STDIN>; # ABRO EL FICHERO # ESCRIBO # CIERRO EL ARCHIVO close MI_LOG;
Como ven incluimos otra forma de abrir el fichero (que consume unos bytes más de memoria), y la capacidad de procesar un error (NO SE PUEDE CREAR EL FICHERO)...
Vemos tambien chop() que es una funcion para quitar el último carácter, que es en general el retorno de carro y por eso siempre se quita. Tambien vemos cómo asignar a una variable el valor introducido en la Entrada Standard (<STDIN>).
Como verán es un lenguaje muy flexible, y eso que todavía no vimos nada más que una introducción. Ya veremos otras capacidades de Perl, como la gran facilidad para manejarnos con conexiónes a Internet, pero no alcanzaremos a contemplar toda la capacidad de éste lenguaje, como Interfaces gráficas con Qt, interacción con OLE en Windows, capacidad de manejar imágenes, actuar como CGI en programación web, Tratar con bases de datos, etcétera...
BUENO, ësta fue la INTRODUCCION A PERL }=) ::.
En otra ocasión nos adentraremos en éste vasto lenguaje, el LENGUAJE-AMIGO-DEL-HACKER.