141
Corso introduttivo a Perl Pisa, 22 Ottobre 2009

Perl101

Embed Size (px)

DESCRIPTION

http://www.stefanorodighiero.net/perl101 Corso introduttivo al Perl, presentato durante l'Italian Perl Workshop 2009

Citation preview

Page 1: Perl101

Corso introduttivo aPerlPisa, 22 Ottobre 2009

Page 2: Perl101

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

Page 3: Perl101

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

Page 4: Perl101

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

Page 5: Perl101

Perl~1987, Larry Wall

Page 6: Perl101

Perl 4.01991, Camel Book

Page 7: Perl101

Perl 51994, Perl come lo conosciamo ora

Page 8: Perl101

Perl 5.10

Page 9: Perl101

Perl 5.11

Page 10: Perl101

Perl 5.115.11.1 l'altro ieri!

Page 11: Perl101

Perl 6???

Page 12: Perl101

Rakudo

Page 13: Perl101

Rakudo *~ Primavera 2010

Page 14: Perl101

Perl

Page 15: Perl101

PERLPractical Extraction and Report LanguagePathologically Eclectic Rubbish ListerPolymorphic Existential Recursive Lambdas

Page 16: Perl101

perl

Page 17: Perl101

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

Page 18: Perl101

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

Page 19: Perl101

Come cercare aiuto

Page 20: Perl101

perldoc

Page 22: Perl101

#perl.it

Page 23: Perl101

www.perlmonks.org

Page 24: Perl101

Variabili ::

Page 25: Perl101

$

Page 26: Perl101

ScalariUn valore singoloNumeri e stringhe di caratteri

Page 27: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 28: Perl101

@

Page 29: Perl101

ArrayUn insieme ordinato di valori scalari

Page 30: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 31: Perl101

%

Page 32: Perl101

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

Page 33: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 34: Perl101

Riferimenti e strutture dati ::

Page 35: Perl101

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

Page 36: Perl101

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

Page 37: Perl101

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...

Page 38: Perl101

Uno scalare può contenere:

Page 39: Perl101

Un numero.

Page 40: Perl101

Una stringa.

Page 41: Perl101

Un riferimentoad un'altravariabile.

Page 42: Perl101

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

Page 43: Perl101

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

Page 44: Perl101

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

@array

1

2

3

4

5

6

Page 45: Perl101

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

4

5

6

1

2

3

@array

Page 46: Perl101

1

2

3

@array

4

5

6

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

Page 47: Perl101

1

2

3

@array

4

5

6

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

Page 48: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 49: Perl101

Subroutine ::

Page 50: Perl101

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

Page 51: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 52: Perl101

Controllodel flusso ::

Page 53: Perl101

Esecuzionecondizionale ::

Page 54: Perl101

if ... elsif ... else

Page 55: Perl101

if (EXPR) BLOCK

Page 56: Perl101

if (EXPR) BLOCKUn'espr

essione,

che viene va

lutata

in contesto

booleano.

Page 57: Perl101

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

Page 58: Perl101

Un'espressio

ne,

che viene va

lutata

in contesto

booleano.

VeroTutto il resto

Page 59: Perl101

if (EXPR) BLOCKUn'espr

essione,

che viene va

lutata

in contesto

booleano.

Un insieme diistruzioni, delimitateda graffe.

Page 60: Perl101

if (EXPR) BLOCK

Page 61: Perl101

if (EXPR) BLOCKelse BLOCK

Page 62: Perl101

if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK

Page 63: Perl101

if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK

Page 64: Perl101

given ... when

Page 65: Perl101

Come switch e case in altrilinguaggi

Page 66: Perl101

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

Page 67: Perl101

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

Page 68: Perl101

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

Page 69: Perl101

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

Page 70: Perl101

Modificatoridi statement ::

Page 71: Perl101

... if EXPR;

... unless EXPR;

... while EXPR;

... until EXPR;

... foreach EXPR;

Page 72: Perl101

Iterazione ::

Page 73: Perl101

for / foreach

Page 74: Perl101

foreach (LIST) BLOCK

Page 75: Perl101

foreach (LIST) BLOCK

Page 76: Perl101

foreach (LIST) BLOCK

La lista dei

valori

sui quali ciclare

Page 77: Perl101

foreach (LIST) BLOCK

La lista dei

valori

sui quali ciclare

Un insieme diistruzioni, delimitateda graffe.

Page 78: Perl101

foreach (LIST) BLOCK

La lista dei

valori

sui quali ciclare

Un insieme diistruzioni, delimitateda graffe.

All'interno del blocco, il singolo elemento è $_

Page 79: Perl101

foreach my $var (LIST) BLOCK

Page 80: Perl101

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

Page 81: Perl101

next

Page 82: Perl101

redo

Page 83: Perl101

last

Page 84: Perl101

while

Page 85: Perl101

while (EXPR) BLOCK

Page 86: Perl101

while (EXPR) BLOCK

L'espressio

ne

viene valutata in

contesto

booleano

Page 87: Perl101

while (EXPR) BLOCK

L'espressio

ne

viene valutata in

contesto

booleano

Il blocco viene eseguito finchè la condizione è vera

Page 88: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 89: Perl101

I/O ::

Page 90: Perl101

Lettura da file

Page 91: Perl101

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

Page 92: Perl101

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

Il filehandle

Page 93: Perl101

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

Il filehandle

In che modalità

aprire il file?

Page 94: Perl101

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

Il filehandle

In che modalità

aprire il file?

Il nom

e de

l file

Page 95: Perl101

Modalità di apertura

Page 96: Perl101

< Lettura

> Scrittura

>> Append

+< Read/write

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

Page 97: Perl101

my $line = <$fh>;

Page 98: Perl101

my $line = <>;

Forma abbreviata,

legge da STDIN

Page 99: Perl101

my $line = <DATA>;

Forma speciale,

legge dal

filehandle DATA

Page 100: Perl101

close $fh;

Page 101: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 102: Perl101

Espressioniregolari ::

Page 103: Perl101

Un linguaggio dentro il linguaggio.

Page 104: Perl101

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

Page 105: Perl101

/foo/

Page 106: Perl101

foo

Page 107: Perl101

foo bar foo baz

Page 108: Perl101

bar foo bazfoo

Page 109: Perl101

bar foo bazfoo

Page 110: Perl101

bar foo bazfoo

Page 111: Perl101

bar foo bazfoo

Page 112: Perl101

bar foo bazfoo

Page 113: Perl101

Esercizi

http://www.stefanorodighiero.net/perl101/examples.tgz

Page 114: Perl101

Moduli ::

Page 115: Perl101

Insieme alle subroutine, ulteriore strumento di astrazione

Page 116: Perl101

Esercizi

Page 117: Perl101

Ulteriori cenni su strict

Page 118: Perl101

Quando strict si lamenta per le variabili?

Page 119: Perl101

1.

Page 120: Perl101

La variabile non è completamente qualificata.

Page 121: Perl101

2.

Page 122: Perl101

Non è una variabile lessicale precedentemente definita.

Page 123: Perl101

3.

Page 124: Perl101

Non è una variabile package precedentemente definita con vars

Page 125: Perl101

CPAN ::

Page 126: Perl101

search.cpan.org

Page 127: Perl101

$ perl -MCPAN -e shell

Page 128: Perl101

$ cpan

Page 129: Perl101

Qualche modulo utile

Page 130: Perl101

DBI

Page 131: Perl101

CGI

Page 132: Perl101

Template

Page 133: Perl101

Getopt::Long

Page 134: Perl101

DateTime

Page 135: Perl101

Regexp::Common

Page 136: Perl101

HTML::Parser::*

Page 137: Perl101

XML::LibXML

Page 138: Perl101

Moose

Page 139: Perl101

Bibliografia ::

Page 140: Perl101

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

Page 141: Perl101

Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008