Your SlideShare is downloading. ×
0
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Perl101 - Italian Perl Workshop 2011
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Perl101 - Italian Perl Workshop 2011

976

Published on

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

No Downloads
Views
Total Views
976
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
Comments
2
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×