Perl101 - Italian Perl Workshop 2011

Preview:

DESCRIPTION

 

Citation preview

Corso introduttivo aPerlTorino, 7 Settembre 2011

martedì 6 settembre 2011

Corso introduttivo aPerlStefano Rodighierohttp://www.stefanorodighiero.netstefano.rodighiero@gmail.comTwitter: @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

mongers@perl.it

martedì 6 settembre 2011

#perl.it

martedì 6 settembre 2011

www.perlmonks.org

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

Recommended