69
Lenguajes de Scripting Introducci ´ on al lenguaje Perl Detalles del lenguaje Orientaci ´ on a objetos en Perl Lenguajes de Scripting Perl Horst H. von Brand Departamento de Inform ´ atica Universidad T ´ ecnica Federico Santa Mar´ ıa Horst H. von Brand Scripting – Perl

Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Lenguajes de ScriptingPerl

Horst H. von Brand

Departamento de InformaticaUniversidad Tecnica Federico Santa Marıa

Horst H. von Brand Scripting – Perl

Page 2: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

ContenidoLenguajes de ScriptingIntroduccion al lenguaje PerlDetalles del lenguaje

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Orientacion a objetos en PerlPaquetesModulosObjetos

Horst H. von Brand Scripting – Perl

Page 3: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Caracterısticas de lenguajes de scripting

I “Script” es guionI Invocar programas automaticamenteI Lenguajes interpretadosI Muy alto nivel

I Caracterısticas generalesI Manejo de strings y expresiones regularesI Sin tipos, variables no se declaranI Administracion automatica de memoria

I Caracterısticas adicionalesI Empotrable: Puede usarse desde dentro de programasI Extensible: Pueden agregarse nuevas funcionalidades

Horst H. von Brand Scripting – Perl

Page 4: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Algunos lenguajes

I Perl: Oficialmente, abreviatura de Practical Extraction andReport Language

I Python: Por Monty PythonI PHP: Abreviatura de PHP: Hypertext ProcessorI Ruby: La piedra preciosa (si hay perlas. . . )I TCL: Es Tool Control Language, creado con la idea de ser

un lenguaje de extension/configuracionI expect: Una extension de TCL, orientada a controlar

programas interactivosI AWK: Lenguaje inventado por Aho, Weinberger,

Kernighan.

Horst H. von Brand Scripting – Perl

Page 5: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Perl

I Practical Extracting and Report LanguageI Pathologically Eclectic Rubish Lister

I Lema: “There’s more than one way to do it” (TMTOWTDI)I No pretende ser simple, regular, ortogonalI Si aspira a ser comodo, natural y rapido de usar

Horst H. von Brand Scripting – Perl

Page 6: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Lınea de comandos

El tradicional programa en Perl puede escribirse:

perl -e ’print "Hello, world!\n";’

Horst H. von Brand Scripting – Perl

Page 7: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Lınea de comandos

Repetir un comando sobre cada lınea de los archivosmencionados, que se editan en su lugar, quedando losoriginales en los respectivos .bak:

perl -pi.bak -e ’s/hoy/ayer/g’ uno dos

Horst H. von Brand Scripting – Perl

Page 8: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Ejemplos simplesContar lıneas, palabras, caracteres

# ! / usr / b in / p e r l

while (<>) {$ l i n e s ++;$words += s p l i t ;$chars += length ;

}

pr in t ” $ l i n e s $words $chars\n ” ;

Horst H. von Brand Scripting – Perl

Page 9: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Ejemplos simplesContar lıneas, palabras, caracteres – version “completa”

# ! / usr / b in / p e r l −wuse s t r i c t ;

my( $ l i ne , $ l ines , $words , $chars , @tmp ) ;

while ( $ l i n e = <STDIN>) {$ l i n e s ++;@tmp = s p l i t ( / \ s + / , $ l i n e ) ; $words += @tmp;$chars += length ( $ l i n e ) ;

}pr in t STDOUT ” $ l i n e s $words $chars\n ” ;

Horst H. von Brand Scripting – Perl

Page 10: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Ejemplos simplesReferencias cruzadas

# ! / usr / b in / p e r lwhile (<>) {

foreach $w ( s p l i t ( / \W+ / ) ) {i f ( ! defined ( $r {$w} ) ) {

$r {$w} = $ . ;} else {

$r {$w} .= ” , $ . ” unless $r {$w} =˜ / $ . / ;}

}}foreach $w ( sort keys %r ) {

pr in t ”$w : $r {$w}\n ” i f $w;} Horst H. von Brand Scripting – Perl

Page 11: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Ejemplos simplesEntrada y salida

# ! / usr / b in / p e r lopen ( IN , ”< i npu t ” ) ; chomp( @l i s t = <IN > ) ; close ( IN ) ;

open (PGM, ” s o r t i npu t | ” ) ; open (OUT, ”> output ” ) ;while (<PGM>) {

chomp ;for ( $ i = 0 ; $ i <= $# l i s t ; $ i ++) {

pr in t OUT ” $ i : $ l i s t [ $ i ]\n ” i f ( $ l i s t [ $ i ] eq $ ) ;}

}close (PGM, OUT) ;

Horst H. von Brand Scripting – Perl

Page 12: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Tipos de datos basicos

I $escalar: Strings, numeros, referencias.I @arreglo: Elementos $arreglo[0], . . . , $arreglo[$#arreglo]I %hash: Arreglo asociativo, elementos $hash{”clave”}

I Slices: @arreglo[1, 17, 3], @hash{”uno”, ”doce”, ”nueve”}I Inicializar:

I @a = (”Do”, ”Lu”, ”Ma”, ”Mi”, ”Ju”, ”Vi” , ”Sa”);I %h = (”cero” => 0, ”uno” => 1, ”dos” => 2);

Horst H. von Brand Scripting – Perl

Page 13: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Constantes numericas

I Decimal: 100I Para legibilidad: 1 000I Decimales: 3.141592I Con exponente: 6.024e24I Octal: 0277I Hexadecimal: 0x3ffI Binario: 0b1010 0011

Horst H. von Brand Scripting – Perl

Page 14: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Escapes en strings

Los de C, con algunos adicionales:

Codigo Significado”\cC” Control-C”\x{263a}” Unicode (smiley)”\N{Nombre}” Caracter por nombre

Horst H. von Brand Scripting – Perl

Page 15: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Escapes activos en strings

Codigo Accion”\u” Siguiente es mayuscula (titlecase)”\ l ” Siguiente es minuscula”\U” Mayusculas”\L” Minusculas”\Q” Backslash antes de no-alfanumericos”\E” Fin de ”\U”, ”\L”, ”\Q”

Horst H. von Brand Scripting – Perl

Page 16: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Contextos

Toda expresion se evalua en el contexto dado por como se usa.Hay dos contextos basicos:

Escalar: Arreglos dan su largo, hashes dan estadısticas desu uso, y una variedad de funciones entreganresultados escalares

Lista: Arreglos/listas dan sus valores; hashes dan lospares (clave, valor) en una lista; escalares danuna lista de un elemento

Horst H. von Brand Scripting – Perl

Page 17: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Valores de verdad

Cuando se requiere un valor de verdad, esto proveeimpıcitamente contexto escalar. Perl usa los siguientescriterios:

I Cualquier string, salvo ” ” y ”0”, es verdaderoI Todo numero, salvo 0, es verdaderoI Cualquier referencia es verdaderaI Cualquier valor no definido es falso

Horst H. von Brand Scripting – Perl

Page 18: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores

Basicamente los de C, pero con algunas adiciones:

I Rango: 1..10, \”a0\”..\” z9\”I Concatenacion de strings: $saludo . ” , ” . $nombre

(Claro que se escribirıa ”$saludo, $nombre” mas bien)I Repetir un string: ”\t ” x ($k / 8) . ” ” x ($k % 8)I Potencia: $num ∗∗ 5

Ademas las combinadas con asignacion (salvo rango).

Horst H. von Brand Scripting – Perl

Page 19: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores logicos adicionales

Hay operadores logicos de muy baja precedencia, usados masque nada por la evaluacion en cortocircuito:

open(IN, ”< $file” ) or die ”Can’t open $file” ;

/ˆ #/ and next;

Horst H. von Brand Scripting – Perl

Page 20: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Comparaciones

Comparacion Numero StringMenor que < ltMenor o igual que <= leIgual a == eqMayor o igual que >= geMayor que > gtNo igual a != neComparar <=> cmp

Horst H. von Brand Scripting – Perl

Page 21: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Estructuras de control

i f (CONDITION) {. . .

}e l s i f (CONDITION) {

. . .}else {

. . .}

unless (CONDITION){. . .

}Horst H. von Brand Scripting – Perl

Page 22: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Estructuras de control

while (CONDITION) {. . .l as t ;. . .next ;. . .

} continue {. . .

}

Horst H. von Brand Scripting – Perl

Page 23: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Estructuras de control

u n t i l (CONDITION) {. . .l as t ;. . .next ;. . .

} continue {. . .

}

Horst H. von Brand Scripting – Perl

Page 24: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Estructuras de control

for ( INIT ; CONDITION ; UPDATE) {. . .next ;. . .l as t ;. . .

}

Horst H. von Brand Scripting – Perl

Page 25: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Estructuras de control

foreach VAR ( LIST ) {. . .next ;. . .l as t ;. . .

}

Horst H. von Brand Scripting – Perl

Page 26: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Modificadores

. . . i f (CONDITION ) ;

. . . unless (CONDITION ) ;

. . . while (CONDITION ) ;

. . . u n t i l (CONDITION ) ;

. . . foreach LIST ;

Horst H. von Brand Scripting – Perl

Page 27: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Modificadores

do {. . .

} while (CONDITION ) ;

do {. . .

} u n t i l (CONDITION ) ;

Horst H. von Brand Scripting – Perl

Page 28: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Rotulos de ciclos

LABEL : {. . .next LABEL ;. . .l as t LABEL ;. . .

}

Horst H. von Brand Scripting – Perl

Page 29: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Funciones predefinidasManejo de arreglos como deque

I push ARRAY, LISTI $var = pop ARRAYI $var = shift ARRAY

Por omision, @ARGV o @I unshift ARRAY, LIST

Horst H. von Brand Scripting – Perl

Page 30: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Funciones predefinidasCombinar/dividir strings

I join EXPR, LISTI split /PATTERN/, EXPR, LIMIT

O sea, se puede hacer algo como:

perl -e ’print join(" ", split //, shift), "\n";’ ’Alguna ch\penalty \@M \hskip \z@skip \unhbox \voidb@x \bgroup \let \unhbox \voidb@x \setbox \@tempboxa \hbox {a\global \mathchardef \accent@spacefactor \spacefactor }\accent 19 a\egroup \spacefactor \accent@spacefactor \penalty \@M \hskip \z@skip \setbox \@tempboxa \hbox {a\global \mathchardef \accent@spacefactor \spacefactor }\spacefactor \accent@spacefactor chara’

Horst H. von Brand Scripting – Perl

Page 31: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Funciones predefinidasManipulacion de arreglos

I sort BLOCK ARRAYBLOCK compara $a con $b

I map BLOCK ARRAY o map EXPR, ARRAYI grep BLOCK ARRAY o grep EXPR, ARRAY

Horst H. von Brand Scripting – Perl

Page 32: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Funciones predefinidasManipulacion de strings

I lc EXPR, uc EXPRI lcfirst EXPR, ucfirst EXPR

Horst H. von Brand Scripting – Perl

Page 33: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Funciones predefinidasOtras clases

I Manipulacion de procesosI Hebras (threads)I NumericasI Llamadas propias de UNIX

Horst H. von Brand Scripting – Perl

Page 34: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Un ejemplo de usoDatos

Supongamos que tenemos un archivo con el siguiente“creativo” formato. Viene ordenado por apellido:

HERNANDEZ:GOMEZ:LUIS:234567-8IN:OUT:GIGO:891234-6LI:CHIANG:DANIEL ALBERTO:345678-9NOGUERA:NORAMBUENA:NELLY NORA:987654-3PEREZ:LOPEZ:JUAN PABLO:123456-7SALGADO:NARDEZ:JOSEFO LUIS ALBERTO JAVIER:456789-KZAMORA:YUMA:ADAN BENJAMIN CARLOS DAVID:132547-6

Horst H. von Brand Scripting – Perl

Page 35: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Un ejemplo de usoSalida deseada

Se requiere un archivo con el rol, seguido por el nombre. Debeestar ordenado por rol:

123456-7: Juan Pablo Perez Lopez132547-6: Adan Benjamin Carlos David Zamora Yuma234567-8: Luis Hernandez Gomez345678-9: Daniel Alberto Li Chiang456789-K: Josefo Luis Alberto Javier Salgado Nardez891234-6: Gigo In Out987654-3: Nelly Nora Noguera Norambuena

Horst H. von Brand Scripting – Perl

Page 36: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Un ejemplo de usoEl programa

# ! / usr / b in / p e r lopen (OUT, ” | s o r t ” ) ;while (<>) {

chomp ;@a = map { jo in ’ ’ , map { u c f i r s t lc } s p l i t }

s p l i t / : / ;pr in t OUT ” \U$a [ 3 ] : ” , jo in ( ’ ’ , @a[2 , 0 , 1 ] ) ,

” \n ” ;}close (OUT) ;

Horst H. von Brand Scripting – Perl

Page 37: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Referencias cruzadasUna version mas sofisticada

# ! / usr / b in / p e r l

while (<>) {foreach ( s p l i t /\W+ / ) {

/ ˆ $ / and next ;$ re f {$ } .= $ re f {$ } ? ” , $ . ” : $ .

unless $ re f {$ } =˜ / $ . / ;}

}pr in t map ” $ : $ re f {$ }\n ” , sort keys %re f ;

Horst H. von Brand Scripting – Perl

Page 38: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores especiales

Comun Gral Int Significa’ ... ’ q{...} No String” ... ” qq{...} Si String‘...‘ qx{...} Si Comando

qw{...} No Palabras/.../ m{...}imosx Si Calza patron

qr {...} imosx Si Patrons {...}{...} egimosx Si Reemplazotr {...}{...} cds No Transliterar

Los delimitadores pueden ser “cualquier cosa”. Parentesisdeben parearse.

Horst H. von Brand Scripting – Perl

Page 39: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores especialesCalce de patron

En m /.../ imosx y qr /.../ imosx:i No distinga mayusculas/minusculasm Multiples lıneaso Compilar una sola vez (once)s Una sola lıneax Expresiones regulares extendidas

qr /.../ retorna un objeto que puede darse en vez de un patronal buscar/reemplazar.

Horst H. von Brand Scripting – Perl

Page 40: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores especialesReemplazo

En s /.../.../ egimosx:

e Lado derecho es expresiong Globalmentei No distinga mayusculas/minusculasm Multiples lıneaso Compilar una sola vez (once)s Una sola lıneax Expresiones regulares extendidas

Horst H. von Brand Scripting – Perl

Page 41: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Operadores especialesTransliterar

En tr /BUSCA/REEMPLAZO/cds:c Complementod Elimine los sin traduccions Secuencias duplicadas se reducen a uno (squash)

tr /A−J/0−9/: Como tr /ABCDEFGHIJ/0123456789/tr /0−9/9/tr /A−Za−z//s: ’Mississippi’ ’Misisipi’

Horst H. von Brand Scripting – Perl

Page 42: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regulares

Son patrones de busqueda en texto. Siendo Perl un lenguajebasado en manipular texto, son fundamentales. Muchamanipulacion de texto es “busqueda y reemplazo”, dondeobviamente son parte central.Las de Perl existen tambien como biblioteca aparte para usoen otros programas: PCRE. En rigor, no son expresionesregulares, pero no seremos nosotros quienes cambien el usodel termino. . .

Horst H. von Brand Scripting – Perl

Page 43: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regulares

En los patrones hay caracteres “normales” (que se representana sı mismos) y metacaracteres, con significado especial. EnPerl todos los metacaracteres son caracteres no alfanumericos,y todos ellos pierden su significado especial si se preceden conbackslash. Esta es la funcion del escape ”\Q...\E”.

Horst H. von Brand Scripting – Perl

Page 44: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regulares

Cada construccion calza con un patron dado, en una posicionespecıfica. A las construcciones que solo registran unaposicion (no calzan con caracteres) les llaman anchor.Las construcciones en general son voraces: Calzan lo mas quepueden. Pero tambien son poco previsoras: Calzan en laprimera oportunidad, aunque hayan calces “mejores” masadelante.

Horst H. von Brand Scripting – Perl

Page 45: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regularesCaracteres individuales

. Calza con cualquier caracter (salvo ”\n”, si /s)[...] Conjunto de caracteres.

ˆ niega, – rango.[: ... :] conjunto POSIX

Horst H. von Brand Scripting – Perl

Page 46: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regularesCaracteres individuales

”\w” Palabra (alfanumerico y )”\W” No-palabra”\s” Espacio”\S” No-espacio”\d” Dıgito”\D” No-dıgito

Horst H. von Brand Scripting – Perl

Page 47: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regularesOperadores

* Repetir lo anterior cero o mas veces+ Repetir lo anterior una o mas veces? Lo anterior es opcional

{m, n} Repetir lo anterior entre m y n veces, {n}exactamente n veces, {n,} al menos n veces

| Alternativas(...) Agrupa (y recuerda en ”\1” y $1, . . . )

Horst H. von Brand Scripting – Perl

Page 48: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regularesAnchors

ˆ Principio del string (o la lınea, si /m)$ Fin del string (o la lınea, si /m)

Horst H. von Brand Scripting – Perl

Page 49: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regularesAnchors

”\b” Borde de palabra”\B” No-borde de palabra”\A” Principio del string”\Z” Final del string (o antes de ”\n” final)”\z” Final del string

Horst H. von Brand Scripting – Perl

Page 50: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Expresiones regulares extendidas

Permite espacios y comentarios.

(?imsx–imsx) Opciones (– apaga)+?, *? Mınimo posible (no voraz)(?# ...) Comentario(?: ...) Agrupa sin recordar, (?imsx–imsx: ...) con

opciones(?= ...) Lookahead positivo, (?! ...) negativo

Hay mas. . .

Horst H. von Brand Scripting – Perl

Page 51: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Busquedas y reemplazos

m/(\w+) \1/ # Palabras repetidas

($h, $m, $s) = $hms =˜ m/(\d+):(\d+):(\d+)/;

m{ˆ(.∗): GIF}; # Ahora $1 es lo que calza

s<ˆ(?:foo|bar)([0−9]+)>[$1−baz−$1]

s/(\[0−9\]+)/$1 + 3/ge

Horst H. von Brand Scripting – Perl

Page 52: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

SubutinasUn ejemplo simple

# ! / usr / b in / p e r lsub Ul{

my $x = s h i f t ;

return u c f i r s t lc $x ;}

while (<>) {pr in t Ul $ ;

}

Horst H. von Brand Scripting – Perl

Page 53: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

SubrutinasManejo de arreglos

# ! / usr / b in / p e r lsub acc{

my $s ;

foreach (@ ) {$s += $ ; $ = $s ;}return @ ;

}

while (<>) { pr in t jo in ’ ’ , acc s p l i t ; pr in t ” \n ” ; }

Horst H. von Brand Scripting – Perl

Page 54: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Subrutinas – definicion generalPrototipos

La definicion general de subrutina tiene la forma:

sub NAME(PROTO): ATTRS BLOCK

I El prototipo y los atributos son opcionales.I Si no hay bloque, es declaracion unicamente.I Si no se da nombre, es anonima.

Horst H. von Brand Scripting – Perl

Page 55: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Subrutinas – definicion generalPrototipos

$ Escalar@ Arreglo\@ Referencia a arreglo\% Referencia a hash& Bloque∗ Glob

\[$@] Escalar o arreglo\%;$ Referencia a hash, escalar opcional

Horst H. von Brand Scripting – Perl

Page 56: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Subrutinas – definicion generalAtributos

Mecanismo para limitar acceso o dar informacion sobre lasubrutina. Basicamente definido por el usuario.

Horst H. von Brand Scripting – Perl

Page 57: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Multiples dimensiones

En Perl es posible escribir por ejemplo:

$a [3][4] = $b{’Lu’}[2]{ ’C−201’}

Claro que esto es diferente de lo que parece. . .Tenemos un hash %b que bajo ’Lu’ tiene una referencia a unarreglo anonimo, cuyo tercer elemento es una referencia a unhash anonimo del cual tomamos el valor con clave ’C−201’.

Horst H. von Brand Scripting – Perl

Page 58: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Manejo explıcito de referencias

Podemos depositar una referencia en una variable

$a = \$x; $b = \@y; $c = \%h;

y despues usarla descaradamente

${$a} = 37; push @{$b}, (1, 2, 3); ${$c}{’Lu’} .= ” , FIS”;

desmanes que son aplicables tambien a rutinas

sub una fun; $f = \&una fun; &{$f}(1, 2, 3);

donde nada impide que tengamos arreglos (o hashes) conelementos de diferentes tipos. . .

Horst H. von Brand Scripting – Perl

Page 59: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Objetos anonimos

Podemos crear objetos anonimos de los distintos tipos, yasignar referencias a ellos:

$a[0] = [1, 2, $x, @y]; # Arreglo$a[1] = { ’uno’ => 1, ’dos’ => 2}; # Hash$a[2] = sub {map $ ∗ 3, @ }; # Rutina

Horst H. von Brand Scripting – Perl

Page 60: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

Tipos de datosContextosOperadoresEstructuras de controlFunciones predefinidasExpresiones regularesSubrutinasEstructuras de datos y referencias

Un ejemplo extrano

# ! / usr / b in / p e r l

$a [ 0 ] = [0 , 1 , 2 ] ; $a [ 0 ] [ 3 ] = 3 ; push @{$a [ 0 ] } , 4 , 5 ;

$a [ 1 ] = { ’ uno ’ => 1 , ’ dos ’ => 2} ;$a [ 1 ] { ’ t r e s ’ } = 3;

$a [ 2 ] = sub {map $ ∗ 3 , @ } ;

pr in t ” $ : $a [ 1 ] { $ }\n ” foreach ( sort keys %{$a [ 1 ] } ) ;pr in t jo in ( ’ ’ , $a [ 2 ] (@{$a [ 0 ] } ) ) , ” \n ” ;

Horst H. von Brand Scripting – Perl

Page 61: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Paquetes

# ! / usr / b in / p e r lpackage Saludos ;$Despedida = ”Chao . . . ” ;$h i = ” Hola ! ” ;sub bye ( ) { $Despedida ; }

package main ;pr in t $Saludos : : h i . ” \n ” ;pr in t Saludos : : bye ( ) . ” \n ” ;

Horst H. von Brand Scripting – Perl

Page 62: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

ModulosEl usuario

# ! / usr / b in / p e r l

use Modulo ;

pr in t func @ARGV;pr in t ” \n ” ;

Horst H. von Brand Scripting – Perl

Page 63: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

ModulosEl modulo mismo

# Modulo .pmpackage Module ;BEGIN {

use Expor ter ( ) ;our ($VERSION, @ISA,

@EXPORT, @EXPORT OK, %EXPORT TAGS ) ;@ISA = qw( Expor ter ) ;@EXPORT = qw(& func ) ;

}

sub func { ” | ” . ( jo in ’ : ’ , @ ) . ” | ” ; }

1; Horst H. von Brand Scripting – Perl

Page 64: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Objetos en Perl

1. Un objeto es una referencia que sabe a que clasepertenece

2. Una clase es un paquete que provee metodos parareferencias a objetos

3. Un metodo es una subrutina que recibe una referencia aun objeto (o el nombre del paquete, para metodos declase) como primer argumento

Horst H. von Brand Scripting – Perl

Page 65: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Estructura de la herencia

I El arreglo @ISA de la clase contiene los nombres de lasclases base. Busqueda de metodos es en profundidad, dederecha a izquierda.

I Toda clase hereda de UNIVERSAL

Horst H. von Brand Scripting – Perl

Page 66: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Sintaxis de llamadas

$mage = Wizard−>summon( ” Gandalf ” ) ; # Metodo de clase$mage−>speak ( ” f r i e n d ” ) ; # de i n s t a n c i a

$clase = re f ($mage ) ; # Clase a l a que pertenece

$ t r a v e l = $companion eq ” Shadowfax ” ? ” r i d e ” : ” walk ” ;$mage−>$ t r a v e l ( ” seven leagues ” ) ; # Metodo r i d e o walk

Horst H. von Brand Scripting – Perl

Page 67: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Crear objetos

La funcion bless asocia una referencia con un paquete:

$obj = {} ; # Referencia a hash anonimo

bless ( $obj ) ; # En paquete ac tua lbless ( $obj , ” C r i t t e r ” ) ; # En paquete C r i t t e r

Comunmente se usan hashes como almacenamiento de losobjetos, pero puede usarse cualquier tipo de referencia.

Horst H. von Brand Scripting – Perl

Page 68: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Ejemplo de claseDefinicion de la clase

# Clase .pmpackage Clase ;sub new {

my $invocant = s h i f t ;my $class = re f ( $ invocant ) | | $invocant ;my $ s e l f = { @ } ; bless ( $se l f , $c lass ) ;return $ s e l f ;

}sub get name ( ) { ${$ [ 0 ]}{name} ; }

1;

Horst H. von Brand Scripting – Perl

Page 69: Lenguajes de Scripting Perlnoell/ILI-253-p2/scripting-perl.pdf · 2006-05-02 · Lenguajes de Scripting Introduccion al lenguaje Perl´ Detalles del lenguaje Orientacion a objetos

Lenguajes de ScriptingIntroduccion al lenguaje Perl

Detalles del lenguajeOrientacion a objetos en Perl

PaquetesModulosObjetos

Ejemplo de claseUso de la clase

# ! / usr / b in / p e r l

use Clase ;

$obj = Clase−>new(name => ” i n t i ” ) ;

pr in t $obj−>get name , ” \n ” ;

Horst H. von Brand Scripting – Perl