Perl: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Recupero di 3 fonte/i e segnalazione di 0 link interrotto/i. #IABot (v2.0beta15)
 
(11 versioni intermedie di 8 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 =
Riga 21:
|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.
Riga 27:
== Descrizione ==
 
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 news|lingua=en|url=https://www.techopedia.com/definition/3941/practical-extraction-and-report-language-perl|titolo=What is Perl? - Definition from Techopedia|pubblicazione=Techopedia.com|accesso=2017-09-26}}</ref>, ma questo è un [[acronimo 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 - 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 a un più basso livello, offrendo in aggiunta 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; esso non è mai stato pensato per essere compatto, elegante o minimale, infatti il suo motto è 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 web|url=https://www.urbandictionary.com/define.php?term=TMTOWTDI|titolo=Urban Dictionary: TMTOWTDI|sito=Urban Dictionary|lingua=en-US|accesso=2017-09-26}}</ref> Larry Wall ha detto che l'obiettivo di Perl è «rendere le cose facili, facili, e quelle difficili, possibili» («''Make the easy things easy, and the hard things possible.»'').<ref>{{Cita libro|autore=Larry Wall|autore2=Randal L. Schwartz|autore3=Tom Christiansen|titolo=Programming 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.
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 131:
* [[Black Perl]]
* [[Code golf]]
* [[BioPerl]]
 
== Altri progetti ==
Riga 136 ⟶ 137:
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{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}}
Riga 145 ⟶ 148:
* {{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}}