Upload
stefano-rodighiero
View
1.375
Download
0
Embed Size (px)
DESCRIPTION
http://www.stefanorodighiero.net/perl101 Corso introduttivo al Perl, presentato durante l'Italian Perl Workshop 2009
Citation preview
Corso introduttivo aPerlPisa, 22 Ottobre 2009
Corso introduttivo aPerlStefano Rodighierohttp://[email protected]: @larsen
Cosa poteteaspettarvi daquesto corsoSapere scrivere dei semplici programmi PerlSapere leggere programmi PerlSapere dove trovare altra documentazione
Corso introduttivo aPerl•Variabili•Riferimenti e strutture dati•Subroutine•I/O•Espressioni regolari•Moduli•CPAN
Perl~1987, Larry Wall
Perl 4.01991, Camel Book
Perl 51994, Perl come lo conosciamo ora
Perl 5.10
Perl 5.11
Perl 5.115.11.1 l'altro ieri!
Perl 6???
Rakudo
Rakudo *~ Primavera 2010
Perl
PERLPractical Extraction and Report LanguagePathologically Eclectic Rubbish ListerPolymorphic Existential Recursive Lambdas
perl
PerlTIMTOWTDIRendere facili le cose facili, possibili le cose difficiliSimile ad un linguaggio naturale
ProcurarsiPerlSe usate un sistema *NIX, molto probabilmente lo avete giàPer Windows, ActiveState Perl oppure Strawberry Perl
Come cercare aiuto
perldoc
#perl.it
www.perlmonks.org
Variabili ::
$
ScalariUn valore singoloNumeri e stringhe di caratteri
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
@
ArrayUn insieme ordinato di valori scalari
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
%
HashUn insieme (non ordinato)di coppie chiave-valore scalareFondamentale!
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
Riferimenti e strutture dati ::
Riferimenti e strutture dati ::Una questione in sospeso...
Riferimenti e strutture dati ::Una questione in sospeso...
use feature 'say';
# E` 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...
Uno scalare può contenere:
Un numero.
Una stringa.
Un riferimentoad un'altravariabile.
my @array = (1, 2, 3, 4, 5, 6);
my @array = ((1, 2, 3), (4, 5, 6));
my @array = ((1, 2, 3), (4, 5, 6));
@array
1
2
3
4
5
6
my @array = ((1, 2, 3), (4, 5, 6));
•
4
5
6
1
2
3
@array
•
•
1
2
3
@array
4
5
6
my @array = ((1, 2, 3), (4, 5, 6));
•
•
1
2
3
@array
4
5
6
my @array = ([1, 2, 3], [4, 5, 6]);
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
Subroutine ::
Subroutine ::Codice riusabile (Don't repeat yourself: DRY)Strumento di astrazioneConfigurabilità del comportamento
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
Controllodel flusso ::
Esecuzionecondizionale ::
if ... elsif ... else
if (EXPR) BLOCK
if (EXPR) BLOCKUn'espr
essione,
che viene va
lutata
in contesto
booleano.
Un'espressio
ne,
che viene va
lutata
in contesto
booleano.
Falso0 (il numero zero)'' (la stringa vuota)'0' (una stringa che contiene il singolocarattere corrispondente alla cifra zero)undef
Un'espressio
ne,
che viene va
lutata
in contesto
booleano.
VeroTutto il resto
if (EXPR) BLOCKUn'espr
essione,
che viene va
lutata
in contesto
booleano.
Un insieme diistruzioni, delimitateda graffe.
if (EXPR) BLOCK
if (EXPR) BLOCKelse BLOCK
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
given ... when
Come switch e case in altrilinguaggi
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
Modificatoridi statement ::
... if EXPR;
... unless EXPR;
... while EXPR;
... until EXPR;
... foreach EXPR;
Iterazione ::
for / foreach
foreach (LIST) BLOCK
foreach (LIST) BLOCK
foreach (LIST) BLOCK
La lista dei
valori
sui quali ciclare
foreach (LIST) BLOCK
La lista dei
valori
sui quali ciclare
Un insieme diistruzioni, delimitateda graffe.
foreach (LIST) BLOCK
La lista dei
valori
sui quali ciclare
Un insieme diistruzioni, delimitateda graffe.
All'interno del blocco, il singolo elemento è $_
foreach my $var (LIST) BLOCK
All'interno del blocco è tipicousare ulteriori istruzioni per il controllo di flusso
next
redo
last
while
while (EXPR) BLOCK
while (EXPR) BLOCK
L'espressio
ne
viene valutata in
contesto
booleano
while (EXPR) BLOCK
L'espressio
ne
viene valutata in
contesto
booleano
Il blocco viene eseguito finchè la condizione è vera
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
I/O ::
Lettura da file
open my $fh, "<", $filename;
open my $fh, "<", $filename;
Il filehandle
open my $fh, "<", $filename;
Il filehandle
In che modalità
aprire il file?
open my $fh, "<", $filename;
Il filehandle
In che modalità
aprire il file?
Il nom
e de
l file
Modalità di apertura
< Lettura
> Scrittura
>> Append
+< Read/write
+> Write/read (se il file esiste lo tronca
my $line = <$fh>;
my $line = <>;
Forma abbreviata,
legge da STDIN
my $line = <DATA>;
Forma speciale,
legge dal
filehandle DATA
close $fh;
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
Espressioniregolari ::
Un linguaggio dentro il linguaggio.
Espressioni regolariUna maniera per esprimere insiemi di stringhe di caratteriRiconoscimento di formatiManipolazione del testo
/foo/
foo
foo bar foo baz
bar foo bazfoo
bar foo bazfoo
bar foo bazfoo
bar foo bazfoo
bar foo bazfoo
Esercizi
http://www.stefanorodighiero.net/perl101/examples.tgz
Moduli ::
Insieme alle subroutine, ulteriore strumento di astrazione
Esercizi
Ulteriori cenni su strict
Quando strict si lamenta per le variabili?
1.
La variabile non è completamente qualificata.
2.
Non è una variabile lessicale precedentemente definita.
3.
Non è una variabile package precedentemente definita con vars
CPAN ::
search.cpan.org
$ perl -MCPAN -e shell
$ cpan
Qualche modulo utile
DBI
CGI
Template
Getopt::Long
DateTime
Regexp::Common
HTML::Parser::*
XML::LibXML
Moose
Bibliografia ::
Bibliografia ::Programming PerlLarry Wall et al.Oreilly, 1995
Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008