Introducción a Perl Verónica Jiménez Jacinto [email protected] Enero 2010.

26
Introducción a Perl Verónica Jiménez Jacinto [email protected] Enero 2010

Transcript of Introducción a Perl Verónica Jiménez Jacinto [email protected] Enero 2010.

Page 1: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Introducción a Perl

Verónica Jiménez [email protected]

Enero 2010

Page 2: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Caracteristicas de Perl...● Es un lenguaje de propósito general

originalmente desarrollado para la manipulación de texto y ahora utilizado para un amplio rango de tareas, como administración de sistemas, desarrollo web, programación en red, y más.

● Se previó que fuera práctico.● Sus principales caracterásticas son que

es fácil de usar, y tiene incorporado un poderoso sistema de procesamiento de texto.

Page 3: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

La primera linea ...

● La primera linea de un programa en Perl contiene el shebang (par de caracteres que identifica el texto que sigue), que le indica al sistema operativo dónde encontrar el intérprete de Perl.

#!/usr/bin/perl

Page 4: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

La instrucción print● Esta instruccion envia información a la

pantalla o a un archivo. :

#!/usr/local/bin/perl

print "Hola Mundo!\n";

print "Esto se escribe en\ndos lineas.\n"; print "Pero esto", "Se escribe en una sola linea.\n";

print '¿Porque aqui no se ejecuta como cambio de linea?.';

Page 5: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Secuencias de escape

● Las siguientes secuencias de escape pueden ser interpretadas en la instrucción print o en la lectura de archivos: \n cambio de linea y retorno de carro \t tabulador horizontal \v tabulador vertical \a bell o beep (campanita)

Page 6: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Tipos de variables● Escalares( scalars). Cualquier cosa: $escalar● Arreglos o vectores o listas (arrays): @arreglo● Tablas asociativas o diccionarios (hashes).

%hash. (TiposVariables.pl)

● Declaración obligatoria con la directiva “my”● use strict;

(TiposVariablesStrict.pl)

Page 7: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Estructuras de control: condicion

if(condicion){~~

~~

} elsif{~~

}else{

~~ ~~ ~~

}

Page 8: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Operadores de comparacion

● Perl tiene 4 importantes operadores, para construir condiciones:

Num interpretación String < ``less than'' lt > ``greater than'' gt == ``equal to'' eq != ``not equal to'' ne <= ``less than or equal to,'' le >= ``greater than or equal to.” ge

Page 9: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Estructuras de control: ciclo while

while(condicion){

}

Page 10: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Estructura de control:ciclo for

● for(<inicio>;<condicion de

paro>;<incremento>)

{bloque }● Ejemplo:

for($i=0;$i<20;$i++) # ejecuta el bloque de código 20 veces

{

print “$i .- Hola”;

}for.pl

Page 11: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

foreach $elemento (@arreglo)

# ciclo sobre cada uno de los elementos de un @arreglo

{ # procesa cada $elemento

}

Estructura de control:foreach

Page 12: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Diversión con cadenas...substr

● substr($a,$pos,$num) : Regresa una subcadena de la cadena $a,

desde la posición $pos, considerando $num caracteres. Si $num no es especificado, se considera el fin de la cadena como fin de la subcadena. Ejemplo:

$cadena = "Bienvenidos a Perl!\n";

print substr($a, 0, 11);#"Bienvenidos"

print substr($a, 13); # " a Perl!\n“

SearchString.pl

Page 13: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Trabajando con archivos

● open(FILEHANDLE,"Flatfile.txt"); Abre el archivo Flatfile.txt para leerlo y lo asocia al manejador FILEHANDLE.

● open (OVERWRITE, ">overwrite.txt"); Abre el archivo overwrite.txt para escribir en él y lo asocia al manejador OVERWRITE.

● open (APPEND, ">>append.txt"); Abre el archivo append.txt para agregarle cosas y lo asocia al manejador APPEND.

Page 14: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Vive o muere...

● Que hacer en caso de que archivo no se puede abrir?

open (FILEH, “flatfile.txt”) || die “no se pudo abrir el archivo flatfile.txt\n”;

Page 15: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Operadores Especiales sobre ficheros...

● -r -w -x : comprueba si hay permiso ● -e : comprueba si el archivo exite● -z : comprueba si el archivo tiene tamaño nulo● -s : devuelve el tamaño del archivo● -f -d : comprueban si el archivo es un fichero ó

directorioif(-r 'flatfile.txt')

{

open(FILEHANDLE, “flatfile.txt”)|| die ...

}

Page 16: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Leyendo a traves del archivo...open(MIFICH,"fichero.txt")|| die "No puedo encontrar fichero.txt\n";

while(<MIFICH>) {

print $_; # $_ contiene la línea actual

}

close(MIFICH);

open(LOGFILE,”flatfile.txt”)|| die "no puedo abrir flatfile.txt\n";

$title = <LOGFILE>;

print "Report Title: $title";

for $line (<LOGFILE>) {

print $line;

}

close(LOGFILE);

Page 17: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Escribiendo a traves de archivos...

open(OUTF,“>fichero.txt")|| die "No puedo encontrar fichero.txt\n";

print OUTF “Nuevo contenido del archivo\n”;

close (OUTF);

Page 18: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Expresiones regulares

● La consulta mas sencilla: =~$user_location = "I see thirteen black cats under a

ladder.";

if ($user_location =~ /thirteen/)

{ print "Eek, bad luck!\n"; }

Page 19: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Metacaracteres...● Un patrón está delimitado por dos barras

inclinadas, /patrón/● Los símbolos más habituales en expresiones

regulares son: ● /./ # cualquier carácter excepto \n,(wildcard)● /\s/ # es un espacio en blanco (space) ● /\t/ # es un tabulador ● /\w/ # es un carácter alfanumérico (word),● /\W/ # no es un carácter alfanumérico (word)● /\d/ # es un dígito ● /\D/ # no es un dígito ● /\A/ # es el principio de una cadena ● /\Z/ # es el final de una cadena ● /^/ # es el principio de una línea de archivo ● /$/ # es el final de una línea de archivo

Page 20: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

cuantificadores ● Los cuantificadores son:

+ una ó más veces ? cero ó una vez * cero ó más veces {n,m} mínimo y máximo de veces

● Los parentesis se usan: - /(\d\s\w)/ # para agrupar varios símbolos en un

solo patrón

- /(A|B|C)/ # para definir un patrón formado por varias alternativas: coincide con 'A', con 'B' o con 'C‘

- Tambien para guardar la “memoria de lo encontrado”

Page 21: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Ejemplos:● /ab+c/ encuentra “abc”,

“abbc”,”abbbc'' y asi sucesivamente.

● /ab*c/ lo mismo que el anterior, pero con “ac”.

● /^http:.+html$/. Localiza un URL● /\d\d\d-\d\d\d\d/ . Un numero

telefonico● /ATG\w+/ La secuencia de un gen?

Page 22: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Mas ejemplos...

● $string =“ATGTTGCCGCGATCCCGAAA"; $string =~ /(^ATG).+(C{3}).+(A{2,5})/;

@subcadenas = ($1, $2, $3);

Page 23: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

● # Ejemplo escrito por Bruno Contreras en Julio de 2005

$RNA = "CAUACUAAGAUCGCGAUAUUAUUAGCGAUAUACGACU"; $stop1 = 'UAA'; $stop2 = 'UGA'; $stop3 = 'UAG'; ($total1,$total2,$total3,$total) = (0,0,0,0); while( $RNA =~ /$stop1/g ) { $total1++; } while( $RNA =~ /$stop2/g ) { $total2++; } while( $RNA =~ /$stop3/g ) { $total3++; } while( $RNA =~ /($stop1|$stop2|$stop3)/g) { $total++; } print "$total1|$total2|$total3|$total\n";

Page 24: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Subprogramas

● declaracion

sub analyze_string {codigo

}● Llamado:

&analyze_string;

O

analyze_string;

Page 25: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Paso de parametros

($val1,$val2) = (8,7);

@arrg3 = (3,4,5);

mi_subrutina($val1,$val2,@arrg3);

sub mi_subrutina {

my($sarg1,$sarg2,@sarg3) = @_;

print "subrutina con parámetros\n";

}

Page 26: Introducción a Perl Verónica Jiménez Jacinto vjimenez@ibt.unam.mx Enero 2010.

Ejemplo$seq1 = “ATGGGCCGTGCTGA...UAA";$seq2 = “ATGCGCTGTGATGA....UAG";$ident= calculaIdentidad($seq1,$seq2);

sub calculaIdentidad {my ($secA,$secB) = @_; my $id = 0;my $len =length($secA);for($pos=0;$pos< $len;$pos++)

{ if(substr($secA,$pos,1) eq substr($secB,$pos,1))

{ $id++; } } return $id/$len; }

Identidad.pl