Perl: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
 
(24 versioni intermedie di 15 utenti non mostrate)
Riga 1:
{{nd}}
{{nota disambigua|titolo=Perl (Saarland)|descrizione=il comune tedesco nella [[Saarland]]}}
{{NN|informatica|marzo 2016|Presenti solo 2 note di conto}}
{{Linguaggio di programmazione
Riga 9:
|versione =
|utilizzo = general-purpose
|paradigmi = multi-paradigma: [[Programmazione funzionale|funzionale]], [[Programmazione imperativa|imperativo]], [[Programmazione orientata agli aspettioggetti|orientato agli oggetti]], [[Riflessione (informatica)|riflessivo]], [[Programmazione procedurale|procedurale]]
|tipizzazione = [[Tipizzazione dinamica|dinamica]]
|specifiche =
|estensione = .pl .pm .t
|influenzato_da = <!-- Lista di linguaggi che hanno influenzato il linguaggio in esame, citare le fonti -->
|ha_influenzato = [[Perl 6]], [[PHP]]
|implementazione_riferimento = [[Linguaggio interpretato|interprete]]
|sistema_operativo = [[Multipiattaforma]]
|lingua = <!-- Lingue supportate dall'impl. di riferimento -->
|licenza = [[GNU General Public License]] o [[Licenza artistica]]<ref name='licensing'>{{Cita web | url = httphttps://dev.perl.org/licenses | titolo = Perl Licensing | accesso=18 giugno 2012 | editore = dev.perl.org}}</ref>
|sito_web =
}}
[[File:Hello World Perl GTk2.png|thumbminiatura|upright=1.4|Codice ed esecuzione di un semplice programma dimostrativo (chiamato "[[Hello world]]") scritto in linguaggio Perl]]
 
'''Perl''' è un [[linguaggio di programmazione ad alto livello]], dinamico, procedurale e interpretato, creato nel 1987 da [[Larry Wall]]. Perl ha un singolare insieme di funzionalità ereditate da [[C (linguaggio)|C]], [[Linguaggio di scripting|scripting shell]] [[Unix]] ([[Bourne shell|sh]]), [[Awk]], [[sed (Unix)|sed]] e in diversa misura da molti altri linguaggi di programmazione, compresi alcuni linguaggi funzionali.
 
== IntroduzioneDescrizione ==
 
Benché sia molto noto come linguaggio per lo sviluppo di [[Common Gateway Interface|CGI]], Perl è stato creato inizialmente come ausilio ai [[sistemista|sistemisti]], come linguaggio di manipolazione di testo e file. Infatti è anche detto '''''P'''ractical '''E'''xtraction and '''R'''eport '''L'''anguage'',<ref>{{Cita manews|lingua=en|url=https://www.techopedia.com/definition/3941/practical-extraction-and-report-language-perl|titolo=What questois èPerl? un- acronimoDefinition assegnatofrom dopoTechopedia|pubblicazione=Techopedia.com|accesso=2017-09-26}}</ref>, lama creazionequesto delè nomeun o,[[acronimo in inglese, un "backronym"inverso]]. Pertanto secondo la documentazione stessa di Perl, non vi si dovrebbe mai riferire come "PERL", ma come "Perl" o "perl" a seconda che si intenda il linguaggio in quanto tale o una specifica implementazione rispettivamente<ref>{{Cita web|url=https://perldoc.perl.org/perlfaq1.html|titolo=perlfaq1 È- anzi questa un'informazione utilizzata negli ambienti perlistici per distinguere "chi è del giro" da chi non lo èperldoc.perl.org|sito=perldoc.perl.org|lingua=en|accesso=2017-09-26}}</ref>.
 
Si è evoluto nel tempo, anche grazie ad un potente sistema di moduli, in un linguaggio a carattere più generale, comprendente l'elaborazione di immagini, l'interrogazione di banche dati, i processi di comunicazione via rete, ed utilizzabile in tutti quegli ambiti in cui non siano strettamente necessarie le performance di un linguaggio compilato più a un più basso livello, offrendo alin contempoaggiunta tempi di sviluppo molto più rapidi. È quindi anche utilizzato per la [[prototipizzazione]] di programmi da implementarsi in altri linguaggi.
 
Il linguaggio è stato pensato per essere pratico (facile da usare, efficiente, completo) oltre che bello e "magico" (è questo un concetto tipicamente perlistico); esso non è mai stato pensato per essere compatto, elegante o minimale, infatti il suo motto più distintivo è riassunto nell'acronimo ''TMTOWTDI'' (There is More Than One Way To Do It), che in italiano molto indicativamente significa "c'è più di un modo per farlo".<ref>{{Cita Tuttaviaweb|url=https://www.urbandictionary.com/define.php?term=TMTOWTDI|titolo=Urban unoDictionary: deiTMTOWTDI|sito=Urban suoiDictionary|lingua=en|accesso=2017-09-26}}</ref> maggiorLarry pregiWall èha detto che grazie a tale ricchezza consentel'obiettivo di risolverePerl conè grande«rendere semplicitàle edcose eleganzafacili, problemifacili, chee conquelle altridifficili, linguaggipossibili» richiederebbero(«''Make notevolithe sforzi.easy Infattithings Larryeasy, Walland amathe ripeterehard chethings unopossible.»'').<ref>{{Cita deilibro|autore=Larry suoiWall|autore2=Randal obiettiviL. èSchwartz|autore3=Tom "rendereChristiansen|titolo=Programming le cose facili, facili, e quelle difficili, possibili"Perl|url=https://archive.org/details/perlcdbookshelf0000unse|edizione=2|anno=1999|editore=O'Reilly|città=Sebastopol|lingua=en|OCLC=43840699|ISBN=9781565924628}}</ref>
 
Perl supporta sia il paradigma procedurale che quello [[object oriented|ad oggetti]], ha potenti funzioni per l'elaborazione dei testi ed è dotato di una delle maggiori collezioni di moduli prodotte dalla sua vasta comunità di utenti.
 
=== Caratteristiche del linguaggio ===
 
Se a prima vista il Perl appare largamente derivato dal C, in verità ha ricevuto questa somiglianza mediata dai linguaggi di scripting delle shell.
Riga 82:
operativi e tutti i moduli compresi nel CPAN.
 
La comunità Perl è sovente attaccata per l'assenza di un [[IntegratedAmbiente developmentdi environmentsviluppo integrato|IDE]] come quelli presenti per Java che rendano semplice l'avvicinamento al linguaggio da parte dei neofiti.
In realtà la ricchezza espressiva del Perl rende complicata la realizzazione di un IDE che evidenzi errori di costruzione degli statement, e dati i numerosi valori di default delle funzioni base risulterebbe oltremodo difficile comprendere in automatico cosa vuole ottenere il programmatore, dove c'è un errore o forse no. Tuttavia Eclipse contiene un'estensione per il Perl e forse altri editor di codice seguiranno.
 
== Programmi di esempio ==
=== Leggere lo standard input in formato [[Comma-separated values|CSV]] e stamparne i 2 campi iniziali ===
 
<sourcesyntaxhighlight lang="perl">
#!/usr/bin/perl
#con i campi puoi fare quello che vuoi
Riga 95:
print "$campo[0],$campo[1]\n";
}
</syntaxhighlight>
</source>
 
In questo esempio vi sono una serie di default che non è possibile comprendere senza una spiegazione:
Riga 103:
Lo stesso programma poteva essere riscritto nella seguente forma:
 
<sourcesyntaxhighlight lang="perl">
#!/usr/bin/perl
while(<>) {
Riga 109:
print "$campo1,$campo2\n";
}
</syntaxhighlight>
</source>
 
In questo secondo caso notiamo come sia possibile scrivere lo stesso programma in un altro modo.
Riga 120:
 
== Bibliografia ==
* {{en}} httphttps://www.oreilly.com/catalog/pperl3 Programming Perl, detto anche Camel Book
* {{en}} httphttps://www.oreilly.com/catalog/learnperl4 Learning Perl, detto anche Lama Book
* {{en}} httphttps://www.oreilly.com/catalog/intermediateperl Intermediate Perl
* {{en}} httphttps://www.oreilly.com/catalog/perlbp Perl Best Practices
* {{en}} http://hop.perl.plover.com Higher-Order Perl
* {{en}} httphttps://wwwweb.archive.org/web/20051110081542/http://manning.com/books/conway Object Oriented Perl di Damian Conway
 
== Voci correlate ==
 
* [[Black Perl]]
* [[Code golf]]
* [[BioPerl]]
 
== Altri progetti ==
{{interprogetto|commons=Category:Perl (programming language)|b=Perl}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|http://www.perl.it|http://www.perl.it}}
* {{FOLDOC}}
* {{cita web | 1 = http://www.perl.it | 2 = http://www.perl.it | accesso = 18 luglio 2003 | urlarchivio = https://web.archive.org/web/20030719041946/http://perl.it/ | dataarchivio = 19 luglio 2003 | urlmorto = sì }}
* {{cita web|http://conferences.yapceurope.org/ipw2009|Italian Perl Workshop 2009}}
* {{cita web | 1 = http://www.perl.it/documenti/articoli/yp/index.html | 2 = http://www.perl.it/documenti/articoli/yp/index.html | accesso = 18 luglio 2003 | urlarchivio = https://web.archive.org/web/20030830132249/http://www.perl.it/documenti/articoli/yp/index.html | dataarchivio = 30 agosto 2003 | urlmorto = sì }}
* {{cita web | 1 = http://www.perl.it/documenti/faq/list.html | 2 = Perl FAQ | accesso = 21 novembre 2006 | urlarchivio = https://web.archive.org/web/20061209152312/http://www.perl.it/documenti/faq/list.html | dataarchivio = 9 dicembre 2006 | urlmorto = sì }}
* {{cita web|httphttps://www.perl.org/|httphttps://www.perl.org/|lingua=en}}
* {{cita web|http://www.perl.com|http://www.perl.com|lingua=en}}
* {{cita web|http://www.cpan.org|L'archivio coordinato dei moduli disponibili|lingua=en}}
* {{cita web|http://www.perlmonks.org|http://www.perlmonks.org|lingua=en}}
* {{cita web|http://www.pm.org|http://www.pm.org|lingua=en}}
* {{cita web|1=http://www.perldoc.org|2=http://www.perldoc.org|lingua=en|accesso=17 novembre 2019|urlarchivio=https://web.archive.org/web/20110505083213/http://perldoc.org/|dataarchivio=5 maggio 2011|urlmorto=sì}}
 
{{Framework per applicazioni web}}