software.wikisort.org - Linguaggio

Search / Calendar

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, scripting shell Unix (sh), Awk, sed e in diversa misura da molti altri linguaggi di programmazione, compresi alcuni linguaggi funzionali.

Disambiguazione – Se stai cercando altri significati, vedi Perl (disambigua).
Perl
linguaggio di programmazione
AutoreLarry Wall
Data di origine1987
Ultima versione5.36.0 (28 maggio 2022)
Utilizzogeneral-purpose
Paradigmimulti-paradigma: funzionale, imperativo, orientato agli oggetti, riflessivo, procedurale
Tipizzazionedinamica
Estensioni comuni.pl .pm .t
Influenzato daC++, C, sed, Awk, BASIC, Lisp e shell Unix
Ha influenzatoPerl 6, PHP
Implementazione di riferimento
Implementazioneinterprete
Sistema operativoMultipiattaforma
LicenzaGNU General Public License o Licenza artistica[1]
Sito webwww.perl.org/ e dev.perl.org/perl5/
Codice ed esecuzione di un semplice programma dimostrativo (chiamato Hello world) scritto in linguaggio Perl
Codice ed esecuzione di un semplice programma dimostrativo (chiamato "Hello world") scritto in linguaggio Perl

Descrizione


Benché sia molto noto come linguaggio per lo sviluppo di CGI, Perl è stato creato inizialmente come ausilio ai sistemisti, come linguaggio di manipolazione di testo e file. Infatti è anche detto Practical Extraction and Report Language[2], 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[3].

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".[4] 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.»).[5]

Perl supporta sia il paradigma procedurale che quello 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


Se a prima vista il Perl appare largamente derivato dal C, in verità ha ricevuto questa somiglianza mediata dai linguaggi di scripting delle shell. Perl è un linguaggio procedurale non tipizzato con variabili, espressioni, assegnamenti, blocchi delimitati da graffe, strutture di controllo e subroutine. Queste ultime possono essere intese come funzioni e il Perl ha numerose doti mediate dai linguaggi funzionali.

Le variabili hanno un prefisso ($ per variabili scalari, @ per array, % per hash) detto sigillo e se questo in parte ha determinato la ricchezza sintattica del Perl, permette l'interpolazione delle variabili nelle stringhe. Come le shell Unix, Perl è dotato di molte funzioni di serie per i compiti più comuni come ordinamento ed accesso al sistema operativo. (In verità solo 279 nel nucleo principale del perl, contro le oltre 3000 del PHP).

Perl ha preso i vettori associativi (conosciuti come 'hash') da awk e le espressioni regolari da sed. Queste semplificano e facilitano molto il parsing ed i compiti di trattamento del testo e dei dati.

Inoltre c'è la possibilità di integrare codice scritto in C in un programma Perl così come viceversa (aggiungere o riscrivere parti in C/C++ in applicazioni o package Perl, o inserire un embedded Perl in programmi C). In verità con i moduli Inline:: sono diversi i linguaggi in cui possono essere definite le funzioni di un sorgente Perl.

Perl è comunemente ritenuto un linguaggio interpretato, ossia che per essere eseguito viene interpretato al momento dell'esecuzione. In realtà, la prima cosa che fa l'interprete è di trasformare il codice sorgente in bytecode, un po' come Java; sul bytecode crea un grafo intermedio sul quale applica ottimizzazioni, ed è questo grafo ad essere interpretato. Questo approccio permette di limitare la lentezza tipica dei linguaggi interpretati. La versione del Perl 6[6], in via di sviluppo da alcuni anni, divide l'esecutore del bytecode (o virtual machine) dal linguaggio in modo tale da permetterne l'utilizzo anche da compilatori di altri linguaggi, tra cui Tcl, Python, Java, etc.

La virtual machine che ne deriva sarà una nuova base per lo sviluppo di linguaggi liberi e consentirà livelli di ottimizzazioni molto elevati e indipendenza dallo sviluppo dei linguaggi sovrastanti. Nonostante il Perl 6 non sia ancora distribuito, alcune idee sono percolate nella versione stabile del Perl 5.8 e molte altre avranno un riscontro in Perl 5.10. Un prototipo del Perl 6, chiamato Pugs, è stato sviluppato in Haskell e si sta verificando una interessante fertilizzazione reciproca tra le due comunità (Perl ed Haskell).

Ancora una volta è stato messo in evidenza come il Perl sia un linguaggio "socievole", che tende quindi a interagire con gli altri linguaggi e ambienti di sviluppo, siano essi: dialetti shell, altri linguaggi interpretati, linguaggi specializzati (come l'SQL), o i più comuni linguaggi compilati. Questa è la ragione che determina il successo di Perl nell'integrazione di sistemi diversi.

Perl è nato in ambiente Unix e distribuito contemporaneamente con due licenze liberali, la GPL e la Licenza Artistica, è disponibile anche per i sistemi operativi Microsoft Windows e MacOS precedente alla versione Mac OS X (che appartiene alla famiglia Unix). L'implementazione per Windows più diffusa viene distribuita da una società, la ActiveState, che da un lato offre sotto una licenza libera moduli specifici per il sistema operativo Windows, dall'altro vende degli ambienti di sviluppo integrati, sia per Perl che per altri linguaggi open source quali ad esempio Python e Tcl.

Benché il Perl sia stato una delle grandi novità nel campo della programmazione, il giudizio su di esso da parte della comunità di programmatori è vario:

Wall - che per formazione è un linguista - ritiene questa libertà semantica un pregio, in quanto più simile al linguaggio umano. Un ulteriore aspetto positivo che attrae i programmatori è l'ampia disponibilità di moduli distribuiti con licenze open source, quasi sempre le stesse di Perl. Moduli solitamente documentati bene, in quanto il linguaggio stesso offre il Pod, un modo di includere la documentazione all'interno del codice, garantendo così che assieme al modulo ci sia pure la documentazione. La comunità ha creato un sito particolare, chiamato CPAN, il quale organizza per argomenti i moduli ritenuti particolarmente validi. I moduli stessi non sono archiviati in quel sito, ma rimangono sui siti scelti dai loro autori. Infine, in quanto linguaggio interpretato e dunque sempre distribuito con il codice sorgente visibile, favorisce la pratica liberale.

Altre caratteristiche importanti di Perl sono:

Alcune caratteristiche del Perl, tra cui la sintassi, permettono una sintesi raramente possibile con altri linguaggi ed impossibile con linguaggi tipo Java e i sorgenti possono dunque essere molto densi di significato, tanto da risultare criptici a chi non ne conosca i rudimenti. In compenso su Internet c'è così tanta documentazione sul Perl che è possibile avvicinarsi rapidamente al linguaggio e con opportuni testi di riferimento iniziarne la strada dell'apprendimento.

Il linguaggio e l'interprete vengono sviluppati da un gruppo di circa cento sviluppatori, guidati da Wall, il quale prende le decisioni finali su cosa includere nel codice. Gli sviluppatori hanno creato il Perl Institute per facilitare lo sviluppo di Perl e migliorarne la visibilità e organizzano conferenze. Wall stesso lavora per la O'Reilly, una casa editrice che sostiene attivamente il movimento Open Source.

Perl fa parte degli strumenti standard dei sistemi operativi Unix. Il suo aggiornamento può essere fatto sia da Internet che tramite le distribuzioni dei sistemi operativi liberi, quali GNU/Linux, BSD, ecc. Le versioni per Windows possono anch'esse essere scaricate da Internet. Ad alcuni manuali di Perl viene allegato un CD-Rom comprendente le versioni per diversi sistemi operativi e tutti i moduli compresi nel CPAN.

La comunità Perl è sovente attaccata per l'assenza di un 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 CSV e stamparne i 2 campi iniziali


#!/usr/bin/perl
#con i campi puoi fare quello che vuoi
while(<>) {
    my @campo=split /,/;
    print "$campo[0],$campo[1]\n";
}

In questo esempio vi sono una serie di default che non è possibile comprendere senza una spiegazione:

Lo stesso programma poteva essere riscritto nella seguente forma:

#!/usr/bin/perl
while(<>) {
   my ($campo1,$campo2)=split /,/;
   print "$campo1,$campo2\n";
}

In questo secondo caso notiamo come sia possibile scrivere lo stesso programma in un altro modo. Esistono molte altre scritture di questo stesso breve programma.

Nota: la dichiarazione my non è strettamente necessaria a meno che non si utilizzi il modulo pragmatico strict, ma quest'ultimo è raccomandato dalla stragrande maggioranza di programmatori perl, insieme a warnings, poiché restringe la libertà del programmatore in modi che prevengono di compiere errori di programmazione banali ma molto comuni, obbligando a pratiche di programmazione più disciplinate che in altri linguaggi sono imposte di default.


Note


  1. Perl Licensing, su dev.perl.org. URL consultato il 18 giugno 2012.
  2. (EN) What is Perl? - Definition from Techopedia, in Techopedia.com. URL consultato il 26 settembre 2017.
  3. (EN) perlfaq1 - perldoc.perl.org, su perldoc.perl.org. URL consultato il 26 settembre 2017.
  4. (EN) Urban Dictionary: TMTOWTDI, su Urban Dictionary. URL consultato il 26 settembre 2017.
  5. (EN) Larry Wall, Randal L. Schwartz e Tom Christiansen, Programming Perl, 2ª ed., Sebastopol, O'Reilly, 1999, ISBN 9781565924628, OCLC 43840699.
  6. Perl 6, su perl6.org. URL consultato il 6 agosto 2015.

Bibliografia



Voci correlate



Altri progetti



Collegamenti esterni


Controllo di autoritàLCCN (EN) sh95010633 · GND (DE) 4307836-9 · BNE (ES) XX542605 (data) · BNF (FR) cb124906490 (data) · J9U (EN, HE) 987007532328005171
Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

На других языках


[fr] Perl (langage)

Perl[2] est un langage de programmation créé par Larry Wall en 1987 pour traiter facilement de l'information de type textuel. Ce langage, interprété, s'inspire des structures de contrôle et d'impression du langage C, mais aussi de langages de scripts sed, awk et shell (sh).
- [it] Perl

[ru] Perl

Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка официально расшифровывается как Practical Extraction and Report Language («практический язык для извлечения данных и составления отчётов»)[9], а в шутку — как Pathologically Eclectic Rubbish Lister («патологически эклектичный перечислитель мусора»)[9]; разработчики языка не считают его название акронимом[10]. Первоначально название состояло из пяти символов и в таком виде в точности совпадало с английским словом pearl («жемчужина»). Но затем стало известно, что такой язык существует (см. PEARL), и букву «a» убрали. Символом языка Perl является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии