perl101 - italian perl workshop 2011

169
Corso introduttivo a Perl Torino, 7 Settembre 2011 martedì 6 settembre 2011

Upload: stefano-rodighiero

Post on 05-Dec-2014

1.189 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Perl101 - Italian Perl Workshop 2011

Corso introduttivo aPerlTorino, 7 Settembre 2011

martedì 6 settembre 2011

Page 2: Perl101 - Italian Perl Workshop 2011

Corso introduttivo aPerlStefano Rodighierohttp://[email protected]: @larsen

martedì 6 settembre 2011

Page 3: Perl101 - Italian Perl Workshop 2011

Cosa poteteaspettarvi daquesto corsoSapere scrivere dei semplici programmi PerlSapere leggere programmi PerlSapere dove trovare altra documentazione

martedì 6 settembre 2011

Page 4: Perl101 - Italian Perl Workshop 2011

Corso introduttivo aPerl• Variabili•Riferimenti e strutture dati• Subroutine• I/O• Espressioni regolari•Moduli•OOP•CPAN

martedì 6 settembre 2011

Page 5: Perl101 - Italian Perl Workshop 2011

Perl~1987, Larry Wall

martedì 6 settembre 2011

Page 6: Perl101 - Italian Perl Workshop 2011

Perl 4.01991, Camel Book

martedì 6 settembre 2011

Page 7: Perl101 - Italian Perl Workshop 2011

Perl 51994, Perl come lo conosciamo ora

martedì 6 settembre 2011

Page 8: Perl101 - Italian Perl Workshop 2011

Perl 5.102008

martedì 6 settembre 2011

Page 9: Perl101 - Italian Perl Workshop 2011

Perl 5.16

martedì 6 settembre 2011

Page 10: Perl101 - Italian Perl Workshop 2011

Perl 6“Quando arriva arriva”

martedì 6 settembre 2011

Page 11: Perl101 - Italian Perl Workshop 2011

Rakudo

martedì 6 settembre 2011

Page 12: Perl101 - Italian Perl Workshop 2011

Rakudo *2010

martedì 6 settembre 2011

Page 13: Perl101 - Italian Perl Workshop 2011

Perl

martedì 6 settembre 2011

Page 14: Perl101 - Italian Perl Workshop 2011

PERLPractical Extraction and Report LanguagePathologically Eclectic Rubbish ListerPolymorphic Existential Recursive Lambdas

martedì 6 settembre 2011

Page 15: Perl101 - Italian Perl Workshop 2011

perl

martedì 6 settembre 2011

Page 16: Perl101 - Italian Perl Workshop 2011

PerlTIMTOWTDIRendere facili le cose facili, possibili le cose difficiliSimile ad un linguaggio naturale

martedì 6 settembre 2011

Page 17: Perl101 - Italian Perl Workshop 2011

ProcurarsiPerlSe usate un sistema *NIX, molto probabilmente lo avete già.Per Windows, ActiveState Perl oppure Strawberry Perl.

martedì 6 settembre 2011

Page 18: Perl101 - Italian Perl Workshop 2011

Come cercare aiuto

martedì 6 settembre 2011

Page 19: Perl101 - Italian Perl Workshop 2011

perldoc

martedì 6 settembre 2011

Page 21: Perl101 - Italian Perl Workshop 2011

#perl.it

martedì 6 settembre 2011

Page 22: Perl101 - Italian Perl Workshop 2011

www.perlmonks.org

martedì 6 settembre 2011

Page 23: Perl101 - Italian Perl Workshop 2011

Bibliografia ::

martedì 6 settembre 2011

Page 24: Perl101 - Italian Perl Workshop 2011

Bibliografia ::Programming PerlLarry Wall et al.Oreilly, 1995

martedì 6 settembre 2011

Page 25: Perl101 - Italian Perl Workshop 2011

Bibliografia ::Modern PerlchromaticOnyx Neon, 2010http://onyxneon.com/books/modern_perl/

martedì 6 settembre 2011

Page 26: Perl101 - Italian Perl Workshop 2011

Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008

martedì 6 settembre 2011

Page 27: Perl101 - Italian Perl Workshop 2011

Variabili ::

martedì 6 settembre 2011

Page 28: Perl101 - Italian Perl Workshop 2011

$

martedì 6 settembre 2011

Page 29: Perl101 - Italian Perl Workshop 2011

ScalariUn valore singoloNumeri e stringhe di caratteri

martedì 6 settembre 2011

Page 30: Perl101 - Italian Perl Workshop 2011

@

martedì 6 settembre 2011

Page 31: Perl101 - Italian Perl Workshop 2011

ArrayUn insieme ordinato di valori scalari

martedì 6 settembre 2011

Page 32: Perl101 - Italian Perl Workshop 2011

%

martedì 6 settembre 2011

Page 33: Perl101 - Italian Perl Workshop 2011

HashUn insieme (non ordinato)di coppie chiave-valore scalareFondamentale!

martedì 6 settembre 2011

Page 34: Perl101 - Italian Perl Workshop 2011

Documentazioneperldataperlop

martedì 6 settembre 2011

Page 35: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 36: Perl101 - Italian Perl Workshop 2011

Riferimenti e strutture dati ::

martedì 6 settembre 2011

Page 37: Perl101 - Italian Perl Workshop 2011

Riferimenti e strutture dati ::Una questione in sospeso...

martedì 6 settembre 2011

Page 38: Perl101 - Italian Perl Workshop 2011

Riferimenti e strutture dati ::Una questione in sospeso...

martedì 6 settembre 2011

Page 39: Perl101 - Italian Perl Workshop 2011

use feature 'say';

# É esattamente equivalente a questo

my @array = (1, 2, 3, 4, 5, 6);say $array[1];

# Come si fa allora un array di array?# Lo vediamo piu` tardi...

martedì 6 settembre 2011

Page 40: Perl101 - Italian Perl Workshop 2011

Uno scalare può contenere:

martedì 6 settembre 2011

Page 41: Perl101 - Italian Perl Workshop 2011

Un numero.

martedì 6 settembre 2011

Page 42: Perl101 - Italian Perl Workshop 2011

Una stringa.

martedì 6 settembre 2011

Page 43: Perl101 - Italian Perl Workshop 2011

Un riferimentoad un'altravariabile.

martedì 6 settembre 2011

Page 44: Perl101 - Italian Perl Workshop 2011

my @array = (1, 2, 3, 4, 5, 6);

martedì 6 settembre 2011

Page 45: Perl101 - Italian Perl Workshop 2011

my @array = ((1, 2, 3), (4, 5, 6));

martedì 6 settembre 2011

Page 46: Perl101 - Italian Perl Workshop 2011

my @array = ((1, 2, 3), (4, 5, 6));

@array

1

2

3

4

5

6

martedì 6 settembre 2011

Page 47: Perl101 - Italian Perl Workshop 2011

my @array = ((1, 2, 3), (4, 5, 6));

4

5

6

1

2

3

@array

martedì 6 settembre 2011

Page 48: Perl101 - Italian Perl Workshop 2011

1

2

3

@array

4

5

6

my @array = ((1, 2, 3), (4, 5, 6));

martedì 6 settembre 2011

Page 49: Perl101 - Italian Perl Workshop 2011

1

2

3

@array

4

5

6

my @array = ([1, 2, 3], [4, 5, 6]);

martedì 6 settembre 2011

Page 50: Perl101 - Italian Perl Workshop 2011

Documentazioneperlrefperlreftutperldscperllol

martedì 6 settembre 2011

Page 51: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 52: Perl101 - Italian Perl Workshop 2011

Subroutine ::

martedì 6 settembre 2011

Page 53: Perl101 - Italian Perl Workshop 2011

Subroutine ::Codice riusabile (Don't repeat yourself: DRY)Strumento di astrazioneConfigurabilità del comportamento

martedì 6 settembre 2011

Page 54: Perl101 - Italian Perl Workshop 2011

Documentazioneperlsub

martedì 6 settembre 2011

Page 55: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 56: Perl101 - Italian Perl Workshop 2011

Controllodel flusso ::

martedì 6 settembre 2011

Page 57: Perl101 - Italian Perl Workshop 2011

Esecuzionecondizionale ::

martedì 6 settembre 2011

Page 58: Perl101 - Italian Perl Workshop 2011

if ... elsif ... else

martedì 6 settembre 2011

Page 59: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCK

martedì 6 settembre 2011

Page 60: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCKUn'espre

ssione,

che viene valu

tata

in contesto

booleano.

martedì 6 settembre 2011

Page 61: Perl101 - Italian Perl Workshop 2011

Un'espressione

,

che viene valu

tata

in contesto

booleano.

Falso0 (il numero zero)'' (la stringa vuota)'0' (una stringa che contiene il singolocarattere corrispondente alla cifra zero)undef

martedì 6 settembre 2011

Page 62: Perl101 - Italian Perl Workshop 2011

Un'espressione

,

che viene valu

tata

in contesto

booleano.

VeroTutto il resto

martedì 6 settembre 2011

Page 63: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCKUn'espre

ssione,

che viene valu

tata

in contesto

booleano.

Un insieme diistruzioni, delimitateda graffe.martedì 6 settembre 2011

Page 64: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCK

martedì 6 settembre 2011

Page 65: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCKelse BLOCK

martedì 6 settembre 2011

Page 66: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK

martedì 6 settembre 2011

Page 67: Perl101 - Italian Perl Workshop 2011

if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK

martedì 6 settembre 2011

Page 68: Perl101 - Italian Perl Workshop 2011

given ... when

martedì 6 settembre 2011

Page 69: Perl101 - Italian Perl Workshop 2011

Come switch e case in altrilinguaggi

martedì 6 settembre 2011

Page 70: Perl101 - Italian Perl Workshop 2011

given (EXPR) { when (EXPR) BLOCK ... default BLOCK}

martedì 6 settembre 2011

Page 71: Perl101 - Italian Perl Workshop 2011

given (EXPR) { when (EXPR) BLOCK ... default BLOCK}

martedì 6 settembre 2011

Page 72: Perl101 - Italian Perl Workshop 2011

given (EXPR) { when (EXPR) BLOCK ... default BLOCK}

martedì 6 settembre 2011

Page 73: Perl101 - Italian Perl Workshop 2011

given (EXPR) { when (EXPR) BLOCK ... default BLOCK}

martedì 6 settembre 2011

Page 74: Perl101 - Italian Perl Workshop 2011

Modificatoridi statement ::

martedì 6 settembre 2011

Page 75: Perl101 - Italian Perl Workshop 2011

... if EXPR;

... unless EXPR;

... while EXPR;

... until EXPR;

... foreach EXPR;

martedì 6 settembre 2011

Page 76: Perl101 - Italian Perl Workshop 2011

Iterazione ::

martedì 6 settembre 2011

Page 77: Perl101 - Italian Perl Workshop 2011

for / foreach

martedì 6 settembre 2011

Page 78: Perl101 - Italian Perl Workshop 2011

foreach (LIST) BLOCK

martedì 6 settembre 2011

Page 79: Perl101 - Italian Perl Workshop 2011

foreach (LIST) BLOCK

martedì 6 settembre 2011

Page 80: Perl101 - Italian Perl Workshop 2011

foreach (LIST) BLOCK

La lista dei v

alori

sui quali ciclare

martedì 6 settembre 2011

Page 81: Perl101 - Italian Perl Workshop 2011

foreach (LIST) BLOCK

La lista dei v

alori

sui quali ciclare

Un insieme diistruzioni, delimitateda graffe.

martedì 6 settembre 2011

Page 82: Perl101 - Italian Perl Workshop 2011

foreach (LIST) BLOCK

La lista dei v

alori

sui quali ciclare

Un insieme diistruzioni, delimitateda graffe.All'interno del blocco, il singolo elemento è $_

martedì 6 settembre 2011

Page 83: Perl101 - Italian Perl Workshop 2011

foreach my $var (LIST) BLOCK

martedì 6 settembre 2011

Page 84: Perl101 - Italian Perl Workshop 2011

All'interno del blocco è tipicousare ulteriori istruzioni per il controllo di flusso

martedì 6 settembre 2011

Page 85: Perl101 - Italian Perl Workshop 2011

next

martedì 6 settembre 2011

Page 86: Perl101 - Italian Perl Workshop 2011

redo

martedì 6 settembre 2011

Page 87: Perl101 - Italian Perl Workshop 2011

last

martedì 6 settembre 2011

Page 88: Perl101 - Italian Perl Workshop 2011

while

martedì 6 settembre 2011

Page 89: Perl101 - Italian Perl Workshop 2011

while (EXPR) BLOCK

martedì 6 settembre 2011

Page 90: Perl101 - Italian Perl Workshop 2011

while (EXPR) BLOCK

L'espression

e

viene valutata in

contesto

booleano

martedì 6 settembre 2011

Page 91: Perl101 - Italian Perl Workshop 2011

while (EXPR) BLOCK

L'espression

e

viene valutata in

contesto

booleano

Il blocco viene eseguito finchè la condizione è veramartedì 6 settembre 2011

Page 92: Perl101 - Italian Perl Workshop 2011

map / grep

martedì 6 settembre 2011

Page 93: Perl101 - Italian Perl Workshop 2011

map BLOCK LISTmap EXPR, LIST

martedì 6 settembre 2011

Page 94: Perl101 - Italian Perl Workshop 2011

map BLOCK LISTmap EXPR, LIST

martedì 6 settembre 2011

Page 95: Perl101 - Italian Perl Workshop 2011

map BLOCK LIST

martedì 6 settembre 2011

Page 96: Perl101 - Italian Perl Workshop 2011

map BLOCK LISTEsegue BLOCK per ciasc

un

elemento di LIST, e restituisce

un'altra lista costituita dal

risultato di ciascuna esecuzione

martedì 6 settembre 2011

Page 97: Perl101 - Italian Perl Workshop 2011

map EXPR, LISTValuta EXPR per ciascu

n elemento

di LIST, e restituisce un'altra

lista costituita dal risu

ltato di

ciascuna valutazione

martedì 6 settembre 2011

Page 98: Perl101 - Italian Perl Workshop 2011

grep BLOCK LISTgrep EXPR, LIST

martedì 6 settembre 2011

Page 99: Perl101 - Italian Perl Workshop 2011

grep BLOCK LISTgrep EXPR, LIST

Valuta BLOCK o EXPR per ciascun

elemento di LIST, e restituisce un'altra

lista costituita dagli ele

menti di LIST

per cui la valutazione ha restituito un

valore vero.

martedì 6 settembre 2011

Page 100: Perl101 - Italian Perl Workshop 2011

Documentazioneperlsyn

martedì 6 settembre 2011

Page 101: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 102: Perl101 - Italian Perl Workshop 2011

I/O ::

martedì 6 settembre 2011

Page 103: Perl101 - Italian Perl Workshop 2011

Lettura da file

martedì 6 settembre 2011

Page 104: Perl101 - Italian Perl Workshop 2011

open my $fh, "<", $filename;

martedì 6 settembre 2011

Page 105: Perl101 - Italian Perl Workshop 2011

open my $fh, "<", $filename;

Il filehandle

martedì 6 settembre 2011

Page 106: Perl101 - Italian Perl Workshop 2011

open my $fh, "<", $filename;

Il filehandle

In che modalità

aprire il file?

martedì 6 settembre 2011

Page 107: Perl101 - Italian Perl Workshop 2011

open my $fh, "<", $filename;

Il filehandle

In che modalità

aprire il file?

Il nom

e del

file

martedì 6 settembre 2011

Page 108: Perl101 - Italian Perl Workshop 2011

Modalità di apertura

martedì 6 settembre 2011

Page 109: Perl101 - Italian Perl Workshop 2011

< Lettura

> Scrittura

>> Append

+< Read/write

+> Write/read (se il file esiste lo tronca

martedì 6 settembre 2011

Page 110: Perl101 - Italian Perl Workshop 2011

my $line = <$fh>;

martedì 6 settembre 2011

Page 111: Perl101 - Italian Perl Workshop 2011

my $line = <>;

Forma abbreviata,

legge da STDIN

martedì 6 settembre 2011

Page 112: Perl101 - Italian Perl Workshop 2011

my $line = <DATA>;

Forma speciale,

legge dal

filehandle DATA

martedì 6 settembre 2011

Page 113: Perl101 - Italian Perl Workshop 2011

close $fh;

martedì 6 settembre 2011

Page 114: Perl101 - Italian Perl Workshop 2011

Documentazioneperlfunc (perldoc -f ...)perlopentut

martedì 6 settembre 2011

Page 115: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 116: Perl101 - Italian Perl Workshop 2011

Espressioniregolari ::

martedì 6 settembre 2011

Page 117: Perl101 - Italian Perl Workshop 2011

Un linguaggio dentro il linguaggio.

martedì 6 settembre 2011

Page 118: Perl101 - Italian Perl Workshop 2011

Espressioni regolariUna maniera per esprimere insiemi di stringhe di caratteriRiconoscimento di formatiManipolazione del testo

martedì 6 settembre 2011

Page 119: Perl101 - Italian Perl Workshop 2011

/foo/

martedì 6 settembre 2011

Page 120: Perl101 - Italian Perl Workshop 2011

foo

martedì 6 settembre 2011

Page 121: Perl101 - Italian Perl Workshop 2011

foo bar foo baz

martedì 6 settembre 2011

Page 122: Perl101 - Italian Perl Workshop 2011

bar foo bazfoo

martedì 6 settembre 2011

Page 123: Perl101 - Italian Perl Workshop 2011

bar foo bazfoo

martedì 6 settembre 2011

Page 124: Perl101 - Italian Perl Workshop 2011

bar foo bazfoo

martedì 6 settembre 2011

Page 125: Perl101 - Italian Perl Workshop 2011

bar foo bazfoo

martedì 6 settembre 2011

Page 126: Perl101 - Italian Perl Workshop 2011

bar foo bazfoo

martedì 6 settembre 2011

Page 127: Perl101 - Italian Perl Workshop 2011

Documentazioneperlreperlreref

martedì 6 settembre 2011

Page 128: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 129: Perl101 - Italian Perl Workshop 2011

Moduli ::

martedì 6 settembre 2011

Page 130: Perl101 - Italian Perl Workshop 2011

Insieme alle subroutine, ulteriore strumento di astrazione

martedì 6 settembre 2011

Page 131: Perl101 - Italian Perl Workshop 2011

Documentazioneperlmod

martedì 6 settembre 2011

Page 132: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 133: Perl101 - Italian Perl Workshop 2011

Ulteriori cenni su strict

martedì 6 settembre 2011

Page 134: Perl101 - Italian Perl Workshop 2011

Quando è che strict si lamenta per le variabili?

martedì 6 settembre 2011

Page 135: Perl101 - Italian Perl Workshop 2011

1.

martedì 6 settembre 2011

Page 136: Perl101 - Italian Perl Workshop 2011

La variabile non è completamente qualificata.

martedì 6 settembre 2011

Page 137: Perl101 - Italian Perl Workshop 2011

2.

martedì 6 settembre 2011

Page 138: Perl101 - Italian Perl Workshop 2011

Non è una variabile lessicale precedentemente definita.

martedì 6 settembre 2011

Page 139: Perl101 - Italian Perl Workshop 2011

3.

martedì 6 settembre 2011

Page 140: Perl101 - Italian Perl Workshop 2011

Non è una variabile package precedentemente definita con vars.

martedì 6 settembre 2011

Page 141: Perl101 - Italian Perl Workshop 2011

OOP ::

martedì 6 settembre 2011

Page 142: Perl101 - Italian Perl Workshop 2011

Inizialmente non integrata nel linguaggio.

martedì 6 settembre 2011

Page 143: Perl101 - Italian Perl Workshop 2011

Perl 5Oggetti (package, bless, ...)

martedì 6 settembre 2011

Page 144: Perl101 - Italian Perl Workshop 2011

1. Una classe è un package

martedì 6 settembre 2011

Page 145: Perl101 - Italian Perl Workshop 2011

2. Un metodo è una subroutine

martedì 6 settembre 2011

Page 146: Perl101 - Italian Perl Workshop 2011

3. Un oggetto è un riferimento blessed

martedì 6 settembre 2011

Page 147: Perl101 - Italian Perl Workshop 2011

2000Damian Conway, «Object Oriented Perl» – Manning

martedì 6 settembre 2011

Page 148: Perl101 - Italian Perl Workshop 2011

2006Moose

martedì 6 settembre 2011

Page 149: Perl101 - Italian Perl Workshop 2011

Moose::

martedì 6 settembre 2011

Page 150: Perl101 - Italian Perl Workshop 2011

Modello analogo a quello di Perl 6

martedì 6 settembre 2011

Page 151: Perl101 - Italian Perl Workshop 2011

Implementato in Perl 5

martedì 6 settembre 2011

Page 152: Perl101 - Italian Perl Workshop 2011

Documentazioneperlobjperlbootperltootperltoocperlbot

martedì 6 settembre 2011

Page 153: Perl101 - Italian Perl Workshop 2011

Esercizi

https://github.com/larsen/perl101

martedì 6 settembre 2011

Page 154: Perl101 - Italian Perl Workshop 2011

CPAN ::

martedì 6 settembre 2011

Page 155: Perl101 - Italian Perl Workshop 2011

search.cpan.org

martedì 6 settembre 2011

Page 156: Perl101 - Italian Perl Workshop 2011

$ perl -MCPAN -e shell

martedì 6 settembre 2011

Page 157: Perl101 - Italian Perl Workshop 2011

$ cpan

martedì 6 settembre 2011

Page 158: Perl101 - Italian Perl Workshop 2011

Qualche modulo utile

martedì 6 settembre 2011

Page 159: Perl101 - Italian Perl Workshop 2011

DBI

martedì 6 settembre 2011

Page 160: Perl101 - Italian Perl Workshop 2011

DBIx::Class

martedì 6 settembre 2011

Page 161: Perl101 - Italian Perl Workshop 2011

Template

martedì 6 settembre 2011

Page 162: Perl101 - Italian Perl Workshop 2011

Getopt::Long

martedì 6 settembre 2011

Page 163: Perl101 - Italian Perl Workshop 2011

DateTime

martedì 6 settembre 2011

Page 164: Perl101 - Italian Perl Workshop 2011

Regexp::Common

martedì 6 settembre 2011

Page 165: Perl101 - Italian Perl Workshop 2011

HTML::Parser::*

martedì 6 settembre 2011

Page 166: Perl101 - Italian Perl Workshop 2011

XML::LibXML

martedì 6 settembre 2011

Page 167: Perl101 - Italian Perl Workshop 2011

Catalyst

martedì 6 settembre 2011

Page 168: Perl101 - Italian Perl Workshop 2011

Dancer

martedì 6 settembre 2011

Page 169: Perl101 - Italian Perl Workshop 2011

Mojolicious

martedì 6 settembre 2011