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

Upload: susanita-lira

Post on 23-Jan-2016

224 views

Category:

Documents


0 download

TRANSCRIPT

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