Curso de programación en Perl

Iniciado por Erik#, 7 Enero 2009, 13:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Erik#

Curso de PERL by Erik

1.Introducci?n
Perl es un lenguaje de programaci?n por lotes, viene de C, se ejecuta con las consolas, y se pueden hacer exploits, programas de todo tipo, virus...
Un lenguaje de scripting tipo Batch, Shell unix, Python...
En este cursillo os ense?are todo lo que teneis que saber para ser unos buenos programadores de perl, desde crear un archivo perl, hasta crear un exploit.
Lo primero que vamos a hacer sera descargarnos ActivePerl para windows desde aqui.
Es un enlace directo...
O en linux, nos vamos a nuestro gestor de paquetes y lo buscamos.
Principalmente el curso esta dise?ado para Windows.
Muy bien, procedemos la instalaci?n, y una vez acabada, saltamos al siguiente capitulo.

Atenci?n:

Derechos reservados por la licencia Creative Commons, prohibida la venta de este manual.

Erik#

2.Como iniciar las aplicaciones

Muy bien, en PERL, para poder iniciar las aplicaciones tenemos que abrir la consola, y, alli para poder iniciar una aplicacion en perl tenemos que escribir:
perl nombredelaaplicacion.pl
Y se te activara la aplicación.

3.Las rutas en CMD

Esto, tambien nos servira para las aplicaciones en perl, si un dia, nosotros queremos cambiar de ruta en la que se esta ejecutando, solo tenemos que poner:
cd \La ruta que queremos

Podemos elegir:
cd
cd Archivos de programa
cd Documents and Settings
cd Escritorio
cd Favoritos
cd Mis documentos
cd Desktop
cd Home/User...
Y muchísimos más, pero estos son los más normales.

Ahora, tambien podriamos usar md, la funcion de rutas que crea esa ruta que tu deseas, por ejemplo queremos crear la ruta erik, hariamos esto:
md erik
Y crearia esa "ruta" en la ruta que estubiesemos.
Ahora queremos crearla en un lugar especifico...
Pues cambiamos de dirección con cd a donde queramos colocarla, y luego usamos md.
Muy sencillo.

Erik#

4.Nuestra primera aplicacion (Hello World)

Primero, siempre que hagamos código perl, pondremos al principio del todo:
Código (perl) [Seleccionar]
#!/usr/bin/perl
Para informar de que es un código PERL.
Ahora, usaremos la funcion print, que es la que imprime una cadena, o un texto plano en MS-DOS:
Código (perl) [Seleccionar]
#!/usr/bin/perl
print "Hello World";


y ejecutamos:
perl Hello.pl
Y, ét voila, aqui tienes tu primera aplicación en perl.

Erik#

5.Las variables simples

Ahora, aprenderemos algo sobre las variables simples, las variables, como much?simos lenguajes, se almacenan con el $, como vemos aqui:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$nombre = "Erik";


Otra cosa son las comillas, existen de dos maneras, las comillas simples y las comillas dobles, al declarar una variable, da igual si usamos '', que si usamos "".
Pero al declarar la variable, si que es importante...
No es lo mismo que pongamos:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$nombre = "Erik";
print "$nombre";


Que si pusieramos:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$nombre = "Erik";
print '$nombre';


El primero, imprimiria Erik, y el segundo imprimiria $nombre.
Comillas dobles son buenas, comillas simples no.

A las variables tambien les podriamos agregar otras variables o funciones.
Como por ejemplo ahora:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$quehoraes = "Son las".  localtime();
print "$quehoraes";


O este:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$quehora = "Son las";
$es = localtime();
$quehoraes = $quehora."  ".$es;
echo "$quehoraes";


Tambien cuando queremos mostrar una variable en print, podemos hacerlo sin poner comillas de ningun tipo:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$nombre = "Erik";
print $nombre;

Erik#

#4
6.PRINTF
La funci?n PRINTF la necesitaremos para poder hacer flujos de salida con formato tipo C.
Aqui veis las tablas de numeraci?n:

%f = Notacion decimal, coma flotante "float"
%d = Entero con signo, n? decimal
%ld = n? decimal largo
%u  = n? decimal sin signo
%x  = hexadecimal
%lx = n? hexadecimal largo
%X  = hexadecimal con mayusculas
%o  = n? octal
%lo = n? octal largo
%s  = Cadena o string
%c  = un caracter del codigo ASCII
%p  = Puntero
%e  = Notacion cientifica
%%  = signo de porcentaje

Aqui un ejemplo del uso del primero de esta tabla:
Código (perl) [Seleccionar]
#!/usr/bin/perl
printf "%f",91.3691;

Erik#

7.Arrays

Los arrays es una forma de recorrer una variable con diferentes numeros, palabras, etc...
Y seleccionar el que queramos, uno al azar, o todos a la vez.
Cuando definimos un array lo hacemos con la @ delante de todo.

Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 8, 191);
print @array[0];


Esto mostraria: Erik

Para mostrar todos, ponemos:
Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 8, 191);
print @array;


O podriamos hacer selecciones por columnas, por ejemplo:
Código (perl) [Seleccionar]
#!/usr/bin/perl
$array[0]="Erik";
$array[1]="Madness";
$array[2]="Speed";
$array[3]=8;
$array[4]=191;
print @array[2];


Esto mostraria: Speed

Tambien podemos hacer busquedas en un array por caracteres que contenga, por ejemplo:
Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 'Mentor');
@busqueda = grep /^M/, @array;
print @busqueda;


Esto mostraria: Madness Mentor

Ahora mostrariamos las palabras del array, seg?n como acabe las palabras:
Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 'Mentor');
@busqueda = grep /d$/, @array;
print @busqueda;


Esto mostraria: Speed

Ahora mostraremos como borrar el primer elemento del array:
Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 'Mentor');
shift(@array);
print @array;


Esto mostraria: Madness Speed Mentor

Ahora a?adiremos un elemento al array :
Código (perl) [Seleccionar]
#!/usr/bin/perl
@array = ('Erik', 'Madness', 'Speed', 'Mentor');
unshift (@array, "Perl");
print @array;


Esto mostraria: Perl Erik Madness Speed Mentor

Erik#

8.Flujo de entrada

Si queremos que  un programa sea interactivo por parte del usuario, y  que
este programa pueda recoger cierta informacion, usaremos  "STanDart
INput".

Por ejemplo, queremos preguntarle, su nombre y su edad, hariamos algo as?:
Código (perl) [Seleccionar]
#!/usr/bin/perl
print "?Como te llamas?:";
$nombre = <STDIN>;
print "?Cuantos a?os tienes?:";
$edad = <STDIN>;
print "Te llamas $nombre y tienes $edad a?os.";

Erik#

9.Archivos

En esta lecci?n que habran varias sublecciones, veremos como hacer la manipulaci?n de archivos.

9.1.Renombrar archivos

Esta funcion es muy facil, seria algo as?:
Código (perl) [Seleccionar]
#!/usr/bin/perl
rename ("archivo.txt", "supermegaarchivo.txt");


9.2.Abrir archivos

Sysopen se parece bastante a la funcion open salvo que es posible  cambiar
una serie de parametros como los permisos del archivo etc, su sintaxis es:

Código (perl) [Seleccionar]
sysopen (REFERENCIA, "archivo que abrimos", MODO DE APERTURA, PERMISOS)

Modos de apertura:
O_RDONLY : Solo lectura
O_WRONLY : Solo escritura
O_CREAT  : Crea el archivo si no existe
O_TRUNC  : Trunca el archivo antes de leerlo o escribirlo
O_RDWR   : Escritura y lectura


Para usar varios modos a la vez usaremos pipes "|"

Crear un archivo si no existe y escribe en el, por ejemplo:

Código (perl) [Seleccionar]
#!/usr/bin/perl
sysopen (ARCHIVO, "archivo.txt", O_WRONLY | O_CREAT);


Para cambiar permisos, por defecto les da 666, por ejemplo:

Código (perl) [Seleccionar]
#!/usr/bin/perl
sysopen (ARCHIVO, "archivo.txt", O_WRONLY | O_CREAT,0666);


M?s sobre archivos en la siguiente leccion.

Erik#

9.3.Cerrar archivos

Para cerrar los archivos es una sintaxis, muy, muy sencilla:
Código (perl) [Seleccionar]
#!/usr/bin/perl
close ("archivo.txt");


9.4.Abrir procesos

Se abren de una forma parecida a los archivos:
Código (perl) [Seleccionar]
#!/usr/bin/perl
open(rundll32.exe, "|c:\\Windows\\");


Un ejemplo simple:
Código (perl) [Seleccionar]
#!/usr/bin/perl
open(LISTAR, "|dir");
$listar = ();
print $listar;
close $listar;


9.5.Cerrar procesos

Se cierra igual que los archivos:
Código (perl) [Seleccionar]
#!/usr/bin/perl
close (Proceso);

Erik#

10.Directorios

Ahora veremos un par de funciones que nos serviran con los directorios:

10.1.Abrir y cerrar directorios

Usaremos la funcion opendir para abrir y cerrar directorios,  de la misma
forma que lo haciamos con ficheros.
Aqui un ejemplo ofrecido por PAD ;):

Código (perl) [Seleccionar]
#!/usr/bin/perl
opendir (DIRECTORIO, "/");
foreach $nombre (readdir(DIRECTORIO))
{
print "$nombre\n";
}
closedir(DIRECTORIO);


Cuando queramos cambiar el directorio de donde andamos, solo tenemos que hacer esto:
Código (perl) [Seleccionar]
#!/usr/bin/perl
   $zona= "/.";
   $directorio= chdir $zona;


10.2.Gestionar directorios

Para ver en que ruta estamos:
Usaremos el modulo cwd que viene con la biblioteca estanda de perl con activeperl.

Código (perl) [Seleccionar]
#!/usr/bin/perl
use Cwd;
print getcwd();


Ahora, si queremos crear un directorio, usariamos mkdir:

Código (perl) [Seleccionar]
#!/usr/bin/perl
mkdir "Nombre del directorio", 775;


Donde 775 podriamos los permisos del directorio, por defecto seria 775.

Y para borrar directorios, lo mismo, pero usando rmdir:

Código (perl) [Seleccionar]
#!/usr/bin/perl
rmdir "Nombre del directorio";