Upload
stefano-rodighiero
View
1.190
Download
2
Embed Size (px)
DESCRIPTION
Citation preview
Corso introduttivo aPerlTorino, 7 Settembre 2011
martedì 6 settembre 2011
Corso introduttivo aPerlStefano Rodighierohttp://[email protected]: @larsen
martedì 6 settembre 2011
Cosa poteteaspettarvi daquesto corsoSapere scrivere dei semplici programmi PerlSapere leggere programmi PerlSapere dove trovare altra documentazione
martedì 6 settembre 2011
Corso introduttivo aPerl• Variabili•Riferimenti e strutture dati• Subroutine• I/O• Espressioni regolari•Moduli•OOP•CPAN
martedì 6 settembre 2011
Perl~1987, Larry Wall
martedì 6 settembre 2011
Perl 4.01991, Camel Book
martedì 6 settembre 2011
Perl 51994, Perl come lo conosciamo ora
martedì 6 settembre 2011
Perl 5.102008
martedì 6 settembre 2011
Perl 5.16
martedì 6 settembre 2011
Perl 6“Quando arriva arriva”
martedì 6 settembre 2011
Rakudo
martedì 6 settembre 2011
Rakudo *2010
martedì 6 settembre 2011
Perl
martedì 6 settembre 2011
PERLPractical Extraction and Report LanguagePathologically Eclectic Rubbish ListerPolymorphic Existential Recursive Lambdas
martedì 6 settembre 2011
perl
martedì 6 settembre 2011
PerlTIMTOWTDIRendere facili le cose facili, possibili le cose difficiliSimile ad un linguaggio naturale
martedì 6 settembre 2011
ProcurarsiPerlSe usate un sistema *NIX, molto probabilmente lo avete già.Per Windows, ActiveState Perl oppure Strawberry Perl.
martedì 6 settembre 2011
Come cercare aiuto
martedì 6 settembre 2011
perldoc
martedì 6 settembre 2011
#perl.it
martedì 6 settembre 2011
Bibliografia ::
martedì 6 settembre 2011
Bibliografia ::Programming PerlLarry Wall et al.Oreilly, 1995
martedì 6 settembre 2011
Bibliografia ::Modern PerlchromaticOnyx Neon, 2010http://onyxneon.com/books/modern_perl/
martedì 6 settembre 2011
Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008
martedì 6 settembre 2011
Variabili ::
martedì 6 settembre 2011
$
martedì 6 settembre 2011
ScalariUn valore singoloNumeri e stringhe di caratteri
martedì 6 settembre 2011
@
martedì 6 settembre 2011
ArrayUn insieme ordinato di valori scalari
martedì 6 settembre 2011
%
martedì 6 settembre 2011
HashUn insieme (non ordinato)di coppie chiave-valore scalareFondamentale!
martedì 6 settembre 2011
Documentazioneperldataperlop
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Riferimenti e strutture dati ::
martedì 6 settembre 2011
Riferimenti e strutture dati ::Una questione in sospeso...
martedì 6 settembre 2011
Riferimenti e strutture dati ::Una questione in sospeso...
martedì 6 settembre 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
Uno scalare può contenere:
martedì 6 settembre 2011
Un numero.
martedì 6 settembre 2011
Una stringa.
martedì 6 settembre 2011
Un riferimentoad un'altravariabile.
martedì 6 settembre 2011
my @array = (1, 2, 3, 4, 5, 6);
martedì 6 settembre 2011
my @array = ((1, 2, 3), (4, 5, 6));
martedì 6 settembre 2011
my @array = ((1, 2, 3), (4, 5, 6));
@array
1
2
3
4
5
6
martedì 6 settembre 2011
my @array = ((1, 2, 3), (4, 5, 6));
•
4
5
6
1
2
3
@array
martedì 6 settembre 2011
•
•
1
2
3
@array
4
5
6
my @array = ((1, 2, 3), (4, 5, 6));
martedì 6 settembre 2011
•
•
1
2
3
@array
4
5
6
my @array = ([1, 2, 3], [4, 5, 6]);
martedì 6 settembre 2011
Documentazioneperlrefperlreftutperldscperllol
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Subroutine ::
martedì 6 settembre 2011
Subroutine ::Codice riusabile (Don't repeat yourself: DRY)Strumento di astrazioneConfigurabilità del comportamento
martedì 6 settembre 2011
Documentazioneperlsub
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Controllodel flusso ::
martedì 6 settembre 2011
Esecuzionecondizionale ::
martedì 6 settembre 2011
if ... elsif ... else
martedì 6 settembre 2011
if (EXPR) BLOCK
martedì 6 settembre 2011
if (EXPR) BLOCKUn'espre
ssione,
che viene valu
tata
in contesto
booleano.
martedì 6 settembre 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
Un'espressione
,
che viene valu
tata
in contesto
booleano.
VeroTutto il resto
martedì 6 settembre 2011
if (EXPR) BLOCKUn'espre
ssione,
che viene valu
tata
in contesto
booleano.
Un insieme diistruzioni, delimitateda graffe.martedì 6 settembre 2011
if (EXPR) BLOCK
martedì 6 settembre 2011
if (EXPR) BLOCKelse BLOCK
martedì 6 settembre 2011
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
martedì 6 settembre 2011
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
martedì 6 settembre 2011
given ... when
martedì 6 settembre 2011
Come switch e case in altrilinguaggi
martedì 6 settembre 2011
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
martedì 6 settembre 2011
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
martedì 6 settembre 2011
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
martedì 6 settembre 2011
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
martedì 6 settembre 2011
Modificatoridi statement ::
martedì 6 settembre 2011
... if EXPR;
... unless EXPR;
... while EXPR;
... until EXPR;
... foreach EXPR;
martedì 6 settembre 2011
Iterazione ::
martedì 6 settembre 2011
for / foreach
martedì 6 settembre 2011
foreach (LIST) BLOCK
martedì 6 settembre 2011
foreach (LIST) BLOCK
martedì 6 settembre 2011
foreach (LIST) BLOCK
La lista dei v
alori
sui quali ciclare
martedì 6 settembre 2011
foreach (LIST) BLOCK
La lista dei v
alori
sui quali ciclare
Un insieme diistruzioni, delimitateda graffe.
martedì 6 settembre 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
foreach my $var (LIST) BLOCK
martedì 6 settembre 2011
All'interno del blocco è tipicousare ulteriori istruzioni per il controllo di flusso
martedì 6 settembre 2011
next
martedì 6 settembre 2011
redo
martedì 6 settembre 2011
last
martedì 6 settembre 2011
while
martedì 6 settembre 2011
while (EXPR) BLOCK
martedì 6 settembre 2011
while (EXPR) BLOCK
L'espression
e
viene valutata in
contesto
booleano
martedì 6 settembre 2011
while (EXPR) BLOCK
L'espression
e
viene valutata in
contesto
booleano
Il blocco viene eseguito finchè la condizione è veramartedì 6 settembre 2011
map / grep
martedì 6 settembre 2011
map BLOCK LISTmap EXPR, LIST
martedì 6 settembre 2011
map BLOCK LISTmap EXPR, LIST
martedì 6 settembre 2011
map BLOCK LIST
martedì 6 settembre 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
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
grep BLOCK LISTgrep EXPR, LIST
martedì 6 settembre 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
Documentazioneperlsyn
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
I/O ::
martedì 6 settembre 2011
Lettura da file
martedì 6 settembre 2011
open my $fh, "<", $filename;
martedì 6 settembre 2011
open my $fh, "<", $filename;
Il filehandle
martedì 6 settembre 2011
open my $fh, "<", $filename;
Il filehandle
In che modalità
aprire il file?
martedì 6 settembre 2011
open my $fh, "<", $filename;
Il filehandle
In che modalità
aprire il file?
Il nom
e del
file
martedì 6 settembre 2011
Modalità di apertura
martedì 6 settembre 2011
< Lettura
> Scrittura
>> Append
+< Read/write
+> Write/read (se il file esiste lo tronca
martedì 6 settembre 2011
my $line = <$fh>;
martedì 6 settembre 2011
my $line = <>;
Forma abbreviata,
legge da STDIN
martedì 6 settembre 2011
my $line = <DATA>;
Forma speciale,
legge dal
filehandle DATA
martedì 6 settembre 2011
close $fh;
martedì 6 settembre 2011
Documentazioneperlfunc (perldoc -f ...)perlopentut
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Espressioniregolari ::
martedì 6 settembre 2011
Un linguaggio dentro il linguaggio.
martedì 6 settembre 2011
Espressioni regolariUna maniera per esprimere insiemi di stringhe di caratteriRiconoscimento di formatiManipolazione del testo
martedì 6 settembre 2011
/foo/
martedì 6 settembre 2011
foo
martedì 6 settembre 2011
foo bar foo baz
martedì 6 settembre 2011
bar foo bazfoo
martedì 6 settembre 2011
bar foo bazfoo
martedì 6 settembre 2011
bar foo bazfoo
martedì 6 settembre 2011
bar foo bazfoo
martedì 6 settembre 2011
bar foo bazfoo
martedì 6 settembre 2011
Documentazioneperlreperlreref
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Moduli ::
martedì 6 settembre 2011
Insieme alle subroutine, ulteriore strumento di astrazione
martedì 6 settembre 2011
Documentazioneperlmod
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
Ulteriori cenni su strict
martedì 6 settembre 2011
Quando è che strict si lamenta per le variabili?
martedì 6 settembre 2011
1.
martedì 6 settembre 2011
La variabile non è completamente qualificata.
martedì 6 settembre 2011
2.
martedì 6 settembre 2011
Non è una variabile lessicale precedentemente definita.
martedì 6 settembre 2011
3.
martedì 6 settembre 2011
Non è una variabile package precedentemente definita con vars.
martedì 6 settembre 2011
OOP ::
martedì 6 settembre 2011
Inizialmente non integrata nel linguaggio.
martedì 6 settembre 2011
Perl 5Oggetti (package, bless, ...)
martedì 6 settembre 2011
1. Una classe è un package
martedì 6 settembre 2011
2. Un metodo è una subroutine
martedì 6 settembre 2011
3. Un oggetto è un riferimento blessed
martedì 6 settembre 2011
2000Damian Conway, «Object Oriented Perl» – Manning
martedì 6 settembre 2011
2006Moose
martedì 6 settembre 2011
Moose::
martedì 6 settembre 2011
Modello analogo a quello di Perl 6
martedì 6 settembre 2011
Implementato in Perl 5
martedì 6 settembre 2011
Documentazioneperlobjperlbootperltootperltoocperlbot
martedì 6 settembre 2011
Esercizi
https://github.com/larsen/perl101
martedì 6 settembre 2011
CPAN ::
martedì 6 settembre 2011
search.cpan.org
martedì 6 settembre 2011
$ perl -MCPAN -e shell
martedì 6 settembre 2011
$ cpan
martedì 6 settembre 2011
Qualche modulo utile
martedì 6 settembre 2011
DBI
martedì 6 settembre 2011
DBIx::Class
martedì 6 settembre 2011
Template
martedì 6 settembre 2011
Getopt::Long
martedì 6 settembre 2011
DateTime
martedì 6 settembre 2011
Regexp::Common
martedì 6 settembre 2011
HTML::Parser::*
martedì 6 settembre 2011
XML::LibXML
martedì 6 settembre 2011
Catalyst
martedì 6 settembre 2011
Dancer
martedì 6 settembre 2011
Mojolicious
martedì 6 settembre 2011