Corsointroduttivo aPerlTorino, 7 Settembre 2011
Corsointroduttivo aPerlStefano Rodighierohttp://www.stefanorodighiero.netstefano.rodighiero@gmail.comTwitter: @larsen
Cosa poteteaspettarvi daquesto corsoSapere scrivere dei semplici programmi PerlSapere leggere programmi PerlSapere dove tr...
Corsointroduttivo aPerl• Variabili• Riferimenti e strutture dati• Subroutine• I/O• Espressioni regolari• Moduli• OOP• CPAN
Perl~1987, Larry Wall
Perl 4.01991, Camel Book
Perl 51994, Perl come lo conosciamo ora
Perl 5.102008
Perl 5.16
Perl 6“Quando arriva arriva”
Rakudo
Rakudo *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, moltoprobabilmente lo avete già.Per Windows, ActiveState Perl oppureStrawberry Perl.
Come cercareaiuto
perldoc
mongers@perl.it
#perl.it
www.perlmonks.org
Bibliografia ::
Bibliografia ::Programming PerlLarry Wall et al.Oreilly, 1995
Bibliografia ::Modern PerlchromaticOnyx Neon, 2010http://onyxneon.com/books/modern_perl/
Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008
Variabili ::
$
ScalariUn valore singoloNumeri e stringhe di caratteri
@
ArrayUn insieme ordinato di valori scalari
%
HashUn insieme (non ordinato)di coppie chiave-valore scalareFondamentale!
Documentazioneperldataperlop
 Esercizihttps://github.com/larsen/perl101
Riferimenti estrutture dati ::
Riferimenti estrutture dati ::Una questione in sospeso...
Riferimenti estrutture dati ::Una questione in sospeso...
use feature say;# É esattamente equivalente a questomy @array = (1, 2, 3, 4, 5, 6);say $array[1];# Come si fa allora un ar...
Uno scalarepuò contenere:
Un numero.
Una stringa.
Un riferimentoad unaltravariabile.
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    ...
my @array = ((1, 2, 3), (4, 5, 6));            @array                        1              •         2                   ...
my @array = ((1, 2, 3), (4, 5, 6));            @array                        1              •         2                   ...
my @array = ([1, 2, 3], [4, 5, 6]);            @array                        1              •         2                   ...
Documentazioneperlrefperlreftutperldscperllol
 Esercizihttps://github.com/larsen/perl101
Subroutine ::
Subroutine ::Codice riusabile (Dont repeat yourself: DRY)Strumento di astrazioneConfigurabilità del comportamento
Documentazioneperlsub
 Esercizihttps://github.com/larsen/perl101
Controllodel flusso ::
Esecuzionecondizionale ::
if ... elsif ... else
if (EXPR) BLOCK
ne,if (EXPR) BLOCK                ssio                       e spre          tata                  Un             valu    ...
ne,                                                ssioFalso                             Un   e spre                      ...
ne,                              ssioVero             Un  e spre                       e v iene                           ...
ne,if (EXPR) BLOCK                           ssio                                  e spre          tata                   ...
if (EXPR) BLOCK
if (EXPR) BLOCKelse BLOCK
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
given ... when
Come switch ecase 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
lori                              ei va                     lis ta d       lareforeach (LIST)   La           i cic        ...
lori                                   ei va                          lis ta d       lareforeach (LIST)        La         ...
lori                                               ei va                                      lis ta d       lareforeach (...
foreach my $var (LIST)  BLOCK
Allinterno delblocco è tipicousare ulterioriistruzioni per ilcontrollo diflusso
next
redo
last
while
while (EXPR)  BLOCK
one                    spr essi               L e          tat a inwhile (EXPR)            valu                viene  BLOC...
one                              spr essi                         L e          tat a inwhile (EXPR)                      v...
map / grep
map BLOCK LISTmap EXPR, LIST
map BLOCK LISTmap EXPR, LIST
map BLOCK LIST
map BLOCK LIST                                        n                         K per  ciascu              e BLOC         ...
map EXPR, LIST                                        lemento                                scun e                       ...
grep BLOCK LISTgrep EXPR, LIST
grep BLOCK LISTgrep EXPR, LIST                                                 n                                       r c...
Documentazioneperlsyn
 Esercizihttps://github.com/larsen/perl101
I/O ::
Lettura da file
open my $fh, "<", $filename;
open my $fh, "<", $filename; Il      fil         eh              an                dle
open my $fh, "<", $filename; Il                    In      fil         eh           ap      ch              an        rir ...
open my $fh, "<", $filename; Il                                                       e                                   ...
Modalità diapertura
<               Lettura>              Scrittura>>              Append+<            Read/write     Write/read (se il file es...
my $line = <$fh>;
my $line = <>;                             ata,                  a ab brevi           Form       ST  DIN            leg ge...
my $line = <DATA>;                        pec iale,                For ma s                       dal                 legg...
close $fh;
Documentazioneperlfunc (perldoc -f ...)perlopentut
 Esercizihttps://github.com/larsen/perl101
Espressioniregolari ::
Un linguaggiodentro illinguaggio.
EspressioniregolariUna maniera per esprimere insiemi distringhe di caratteriRiconoscimento di formatiManipolazione del testo
/foo/
foo
foo   bar foo baz
foo foo baz bar
foo foo bazbar
bar foo baz foo
bar foo baz    foo
bar foo baz    foo
Documentazioneperlreperlreref
 Esercizihttps://github.com/larsen/perl101
Moduli ::
Insieme allesubroutine,ulteriorestrumento diastrazione
Documentazioneperlmod
 Esercizihttps://github.com/larsen/perl101
Ulteriori cennisu strict
Quando è chestrict silamenta per levariabili?
1.
La variabile non ècompletamentequalificata.
2.
Non è unavariabilelessicaleprecedentementedefinita.
3.
Non è una variabilepackageprecedentementedefinita con usevars o con our.
OOP ::
Inizialmentenon integratanel linguaggio.
Perl 5Oggetti (package, bless, ...)
1. Una classe èun package
2. Un metodo èuna subroutine
3. Un oggetto èun riferimentoblessed
2000Damian Conway, «Object Oriented Perl» –Manning
2006Moose
Moose::
Modelloanalogo aquello di Perl 6
Implementatoin Perl 5
Documentazioneperlobjperlbootperltootperltoocperlbot
 Esercizihttps://github.com/larsen/perl101
CPAN ::
search.cpan.org
$ perl -MCPAN -e shell
$ cpan
Qualche moduloutile
DBI
DBIx::Class
Template
Getopt::Long
DateTime
Regexp::Common
HTML::Parser::*
XML::LibXML
Catalyst
Dancer
Mojolicious
Upcoming SlideShare
Loading in …5
×

Perl101 - Italian Perl Workshop 2011

1,184 views

Published on

Published in: Technology
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,184
On SlideShare
0
From Embeds
0
Number of Embeds
328
Actions
Shares
0
Downloads
17
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Perl101 - Italian Perl Workshop 2011

  1. 1. Corsointroduttivo aPerlTorino, 7 Settembre 2011
  2. 2. Corsointroduttivo aPerlStefano Rodighierohttp://www.stefanorodighiero.netstefano.rodighiero@gmail.comTwitter: @larsen
  3. 3. Cosa poteteaspettarvi daquesto corsoSapere scrivere dei semplici programmi PerlSapere leggere programmi PerlSapere dove trovare altra documentazione
  4. 4. Corsointroduttivo aPerl• Variabili• Riferimenti e strutture dati• Subroutine• I/O• Espressioni regolari• Moduli• OOP• CPAN
  5. 5. Perl~1987, Larry Wall
  6. 6. Perl 4.01991, Camel Book
  7. 7. Perl 51994, Perl come lo conosciamo ora
  8. 8. Perl 5.102008
  9. 9. Perl 5.16
  10. 10. Perl 6“Quando arriva arriva”
  11. 11. Rakudo
  12. 12. Rakudo *2010
  13. 13. Perl
  14. 14. PERLPractical Extraction and Report LanguagePathologically Eclectic Rubbish ListerPolymorphic Existential Recursive Lambdas
  15. 15. perl
  16. 16. PerlTIMTOWTDIRendere facili le cose facili, possibili le cose difficiliSimile ad un linguaggio naturale
  17. 17. ProcurarsiPerlSe usate un sistema *NIX, moltoprobabilmente lo avete già.Per Windows, ActiveState Perl oppureStrawberry Perl.
  18. 18. Come cercareaiuto
  19. 19. perldoc
  20. 20. mongers@perl.it
  21. 21. #perl.it
  22. 22. www.perlmonks.org
  23. 23. Bibliografia ::
  24. 24. Bibliografia ::Programming PerlLarry Wall et al.Oreilly, 1995
  25. 25. Bibliografia ::Modern PerlchromaticOnyx Neon, 2010http://onyxneon.com/books/modern_perl/
  26. 26. Bibliografia ::Pocket PerlStefano RodighieroApogeo, 2008
  27. 27. Variabili ::
  28. 28. $
  29. 29. ScalariUn valore singoloNumeri e stringhe di caratteri
  30. 30. @
  31. 31. ArrayUn insieme ordinato di valori scalari
  32. 32. %
  33. 33. HashUn insieme (non ordinato)di coppie chiave-valore scalareFondamentale!
  34. 34. Documentazioneperldataperlop
  35. 35.  Esercizihttps://github.com/larsen/perl101
  36. 36. Riferimenti estrutture dati ::
  37. 37. Riferimenti estrutture dati ::Una questione in sospeso...
  38. 38. Riferimenti estrutture dati ::Una questione in sospeso...
  39. 39. use feature say;# É esattamente equivalente a questomy @array = (1, 2, 3, 4, 5, 6);say $array[1];# Come si fa allora un array di array?# Lo vediamo piu` tardi...
  40. 40. Uno scalarepuò contenere:
  41. 41. Un numero.
  42. 42. Una stringa.
  43. 43. Un riferimentoad unaltravariabile.
  44. 44. my @array = (1, 2, 3, 4, 5, 6);
  45. 45. my @array = ((1, 2, 3), (4, 5, 6));
  46. 46. my @array = ((1, 2, 3), (4, 5, 6)); @array 1 2 3 4 5 6
  47. 47. my @array = ((1, 2, 3), (4, 5, 6)); @array 1 • 2 3 4 5 6
  48. 48. my @array = ((1, 2, 3), (4, 5, 6)); @array 1 • 2 3 • 4 5 6
  49. 49. my @array = ([1, 2, 3], [4, 5, 6]); @array 1 • 2 3 • 4 5 6
  50. 50. Documentazioneperlrefperlreftutperldscperllol
  51. 51.  Esercizihttps://github.com/larsen/perl101
  52. 52. Subroutine ::
  53. 53. Subroutine ::Codice riusabile (Dont repeat yourself: DRY)Strumento di astrazioneConfigurabilità del comportamento
  54. 54. Documentazioneperlsub
  55. 55.  Esercizihttps://github.com/larsen/perl101
  56. 56. Controllodel flusso ::
  57. 57. Esecuzionecondizionale ::
  58. 58. if ... elsif ... else
  59. 59. if (EXPR) BLOCK
  60. 60. ne,if (EXPR) BLOCK ssio e spre tata Un valu e v iene ch sto nte i n co ole ano. bo
  61. 61. ne, ssioFalso Un e spre e v iene valu tata ch sto0 (il numero zero) nte i n co ano. (la stringa vuota)0 (una stringa che contiene il singolo ole bocarattere corrispondente alla cifra zero)undef
  62. 62. ne, ssioVero Un e spre e v iene valu tata ch stoTutto il resto nte i n co ole ano. bo
  63. 63. ne,if (EXPR) BLOCK ssio e spre tata Un valu e v iene ch sto nte i n co ole ano. bo Un in sieme istru di zioni, da gr delim affe. itate
  64. 64. if (EXPR) BLOCK
  65. 65. if (EXPR) BLOCKelse BLOCK
  66. 66. if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
  67. 67. if (EXPR) BLOCKelsif (EXPR) BLOCKelse BLOCK
  68. 68. given ... when
  69. 69. Come switch ecase in altrilinguaggi
  70. 70. given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
  71. 71. given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
  72. 72. given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
  73. 73. given (EXPR) { when (EXPR) BLOCK ... default BLOCK}
  74. 74. Modificatoridi statement ::
  75. 75. ... if EXPR;... unless EXPR;... while EXPR;... until EXPR;... foreach EXPR;
  76. 76. Iterazione ::
  77. 77. for / foreach
  78. 78. foreach (LIST) BLOCK
  79. 79. foreach (LIST) BLOCK
  80. 80. lori ei va lis ta d lareforeach (LIST) La i cic ual s ui q BLOCK
  81. 81. lori ei va lis ta d lareforeach (LIST) La i cic ual s ui q BLOCK Un in sieme istru di zioni, da gr delim affe. itate
  82. 82. lori ei va lis ta d lareforeach (LIST) La i cic ual s ui q BLOCK Un in sieme istru di Allin zioni, terno da gr delim blocc del affe. itate o, il eleme singo nto è lo $_
  83. 83. foreach my $var (LIST) BLOCK
  84. 84. Allinterno delblocco è tipicousare ulterioriistruzioni per ilcontrollo diflusso
  85. 85. next
  86. 86. redo
  87. 87. last
  88. 88. while
  89. 89. while (EXPR) BLOCK
  90. 90. one spr essi L e tat a inwhile (EXPR) valu viene BLOCK sto c onte ano b oole
  91. 91. one spr essi L e tat a inwhile (EXPR) valu viene BLOCK sto c onte ano b oole Il bl occo esegu viene ito f condi inchè zione la è vera
  92. 92. map / grep
  93. 93. map BLOCK LISTmap EXPR, LIST
  94. 94. map BLOCK LISTmap EXPR, LIST
  95. 95. map BLOCK LIST
  96. 96. map BLOCK LIST n K per ciascu e BLOC ituisce Esegu , e rest d i LIST le mento ita dal e costitu uzione a lista unaltr na esec i ciascu risu ltato d
  97. 97. map EXPR, LIST lemento scun e per cia Valut a EXPR naltra restit uisce u i di LI ST, e ltato d al risu t ituita d lis ta cos tazione na valu ciascu
  98. 98. grep BLOCK LISTgrep EXPR, LIST
  99. 99. grep BLOCK LISTgrep EXPR, LIST n r ciascu K o E XPR pe e unaltra C Valu ta BLO es tituisc d i LI ST, e r di LIS T ele mento e lementi it ui ta dagli tuito un list a cost h a resti tazione i la valu per cu . valore vero
  100. 100. Documentazioneperlsyn
  101. 101.  Esercizihttps://github.com/larsen/perl101
  102. 102. I/O ::
  103. 103. Lettura da file
  104. 104. open my $fh, "<", $filename;
  105. 105. open my $fh, "<", $filename; Il fil eh an dle
  106. 106. open my $fh, "<", $filename; Il In fil eh ap ch an rir em dle ei od lf ali ile tà ?
  107. 107. open my $fh, "<", $filename; Il e fil fil In eh ap ch del an rir em dle ei od me lf ali ile tà no ? Il
  108. 108. Modalità diapertura
  109. 109. < Lettura> Scrittura>> Append+< Read/write Write/read (se il file esiste lo+> tronca
  110. 110. my $line = <$fh>;
  111. 111. my $line = <>; ata, a ab brevi Form ST DIN leg ge da
  112. 112. my $line = <DATA>; pec iale, For ma s dal legge ATA le D filehand
  113. 113. close $fh;
  114. 114. Documentazioneperlfunc (perldoc -f ...)perlopentut
  115. 115.  Esercizihttps://github.com/larsen/perl101
  116. 116. Espressioniregolari ::
  117. 117. Un linguaggiodentro illinguaggio.
  118. 118. EspressioniregolariUna maniera per esprimere insiemi distringhe di caratteriRiconoscimento di formatiManipolazione del testo
  119. 119. /foo/
  120. 120. foo
  121. 121. foo bar foo baz
  122. 122. foo foo baz bar
  123. 123. foo foo bazbar
  124. 124. bar foo baz foo
  125. 125. bar foo baz foo
  126. 126. bar foo baz foo
  127. 127. Documentazioneperlreperlreref
  128. 128.  Esercizihttps://github.com/larsen/perl101
  129. 129. Moduli ::
  130. 130. Insieme allesubroutine,ulteriorestrumento diastrazione
  131. 131. Documentazioneperlmod
  132. 132.  Esercizihttps://github.com/larsen/perl101
  133. 133. Ulteriori cennisu strict
  134. 134. Quando è chestrict silamenta per levariabili?
  135. 135. 1.
  136. 136. La variabile non ècompletamentequalificata.
  137. 137. 2.
  138. 138. Non è unavariabilelessicaleprecedentementedefinita.
  139. 139. 3.
  140. 140. Non è una variabilepackageprecedentementedefinita con usevars o con our.
  141. 141. OOP ::
  142. 142. Inizialmentenon integratanel linguaggio.
  143. 143. Perl 5Oggetti (package, bless, ...)
  144. 144. 1. Una classe èun package
  145. 145. 2. Un metodo èuna subroutine
  146. 146. 3. Un oggetto èun riferimentoblessed
  147. 147. 2000Damian Conway, «Object Oriented Perl» –Manning
  148. 148. 2006Moose
  149. 149. Moose::
  150. 150. Modelloanalogo aquello di Perl 6
  151. 151. Implementatoin Perl 5
  152. 152. Documentazioneperlobjperlbootperltootperltoocperlbot
  153. 153.  Esercizihttps://github.com/larsen/perl101
  154. 154. CPAN ::
  155. 155. search.cpan.org
  156. 156. $ perl -MCPAN -e shell
  157. 157. $ cpan
  158. 158. Qualche moduloutile
  159. 159. DBI
  160. 160. DBIx::Class
  161. 161. Template
  162. 162. Getopt::Long
  163. 163. DateTime
  164. 164. Regexp::Common
  165. 165. HTML::Parser::*
  166. 166. XML::LibXML
  167. 167. Catalyst
  168. 168. Dancer
  169. 169. Mojolicious

×