|  |  |
| --- | --- |
|  | *Ĉi tiu artikolo temas pri programlingvo. Por komunumo en Sarlando, Germanio rigardu la paĝon Perl (Sarlando). Koncerne aliajn signifojn aliru la apartigilon Perlo.* |

**Perl** estas komputila programlingvo kreita de Larry Wall en 1987 kiu prenas propraĵojn de C, sed, awk, ŝela skriptado (sh) kaj malpli de multaj aliaj komputillingvoj. Kvankam la nomo povas esti legita kiel akronimo laŭ pli ol unu maniero ('Praktika elprena kaj resuma lingvo' estas unu), estas normale literumita en miksita majuskleco, kiam temas pri la lingvo, kaj minuskle, kiam temas pri la interpretilo. "Nur perl ĝuste traktas Perl-on."

Celoj
-----

Perl estis kreita por esti praktika lingvo por elpreni informojn de tekstaj dosieroj kaj fari resumojn. Unu el ĝiaj motoj estas "Ekzistas pli ol unu maniero, per kiu fari ĝin!" Alia estas "Perl: la svisarmea ĉensegilo de komputillingvoj". Deklarita celo estas faciligi facilajn taskojn kaj farebligi malfacilajn taskojn. Ĝia fleksebleco permesas variantojn de multaj programadaj paradigmoj: procedura, funkcia, kaj objektema – kvankam purismanoj kontraŭstaras la aliron de Perl, kiu preferas konvenon al la programisto super pura lingvosistemigo. Perl havas fortan integritan subtenon por regulesprimoj. Perl estas ofte konsiderata la arĥetipa skripta komputillingvo kaj jam estis nomita "la gluo kiu kunligas la TTT-on", ĉar ĝi estas unu el la plej popularaj CGI-komputillingvoj. Ĝia rolo de "glua komputillingvo" povas esti priskribita ĝenerale kiel ĝia kapablo kunligi diversajn kaj malsamajn sistemojn kaj datumstrukturojn, kiuj ne estis formitaj por esti kunligitaj.

Perl estas libera programaro, akirebla sub la GPL kaj propra Arta Permesilo (angle Artistic License). Perl haveblas por la plejparto de operaciumoj, sed estas aparte kutima ĉe Unikso kaj similaj sistemoj, kaj plipopulariĝas ĉe Vindozaj sistemoj. Kiel ekzemplo de funkcianta Perl, ĝis januaro de 2002 la programaro kiu funkciigis Vikipedion estis CGI-skripto verkita en Perl.

Implemento
----------

Grandega kolekto da libere uzeblaj moduloj, de alta matematiko ĝis datumbaza konektado, retumado, kaj pli, povas esti elŝutita de reto de retlokoj nomitaj CPAN. La plejparto de la enhavo de CPAN estas ankaŭ havebla je la Artistic License, GPL aŭ ambaŭ.

Kvankam Perl havas la plejparton de la iloj kaj la facilecon de uzo de interpretita lingvo, ĝi ne strikte interpretas la kodon kaj plenumas ĝin lineon post lineo. Anstataŭe, Perl unue tradukas la tutan programon al meza bitoka kodo (multe samkiel en Java), optimigante dum ĝi konvertas, kaj poste plenumas laŭ la bitoka kodo. Eblas traduki perl-programon al bitoka kodo por ŝpari la tradukan paŝon en postaj lanĉadoj, kvankam la "interpretilo" ankoraŭ necesas la kodon por plenumi.

La nuna versio 5.8 subtenas Unikodon. Perl 6 estas prilaborata de pluraj jaroj. Ĝi funkcias per virtuala maŝino nun prilaborata kiel ebla multlingvokapabla arĥitekturo.

Kontrolaj strukturoj
--------------------

La bazaj kontrolaj strukturoj unuavide similas al tiuj de la programlingvoj C kaj Java.
Tamen ili malsimilas, kiam ili kontrolas nur unu instrukcion. Alia diferenco estas, ke Perl enkondukas kontrolan strukturon unless,
kiu estas nur la malo de kutima kontrola instrukcio *if* (Esperante "se").

### Iteracioj

* se estas pluraj instrukcioj inter { kaj }

```
while (*Bulea esprimo*) {
    *instrukcio(j)*
}
```

* alternativo (ne nepre uzenda), se estas nur unu instrukcio (rimarku ke ne estas parentezoj ĉirkaŭ la bulea esprimo)

```
*instrukcio* while *Bulea esprimo*;
```

*while* signifas "dum".

```
do {
    *instrukcio(j)*
} while (*Bulea esprimo*);
```

```
for (*pravalorizado* ; *finkondiĉo* ; *alkrementa ordono*) {
    *instrukcio(j)*
}
```

### Kondiĉoj

* Se estas pluraj instrukcioj

```
if (*Bulea esprimo*) {
    *instrukcio(j)*
}
```

* se nur unu instrukcio

```
*instrukcio* if *Bulea esprimo*;
```

* kun else

```
if (*Bulea esprimo 1*) {
    *instrukcio(j)*
} elsif (*Bulea esprimo 2*)  {
    *instrukcio(j)*
} else {
    *instrukcio(j)*
}
```

*else* signifas "aliokaze", kaj *elsif* estas kunmeto de "else" kaj "if".

Anstataŭ nei la Bulean esprimon, oni povas uzi la instrukcion *unless* (Esperante "se ne"):

* Se estas pluraj instrukcioj

```
unless (*Bulea esprimo*) {
    *instrukcio(j)*
}
```

* alternativo (ne nepre uzenda), se estas nur unu instrukcio

```
*instrukcio* unless *Bulea esprimo*;
```

* kun else

```
unless (*Bulea esprimo*) {
    *instrukcio(j)*
} else {
    *instrukcio(j)*
}
```

Perl 6
------

Perl 6 disigos sintaksan analizadon kaj tradukadon kaj plenumadon, pliallogigante la virtualan maŝinon al programistoj kiuj volas transporti aliajn lingvojn al la arĥitekturo.

Parrot estas la rultempa programo de Perl 6 kaj povas esti programita ĉe malalta nivelo per Parrot simbola maŝinkodo. Parrot ekzistas en limigita formo ekde decembro de 2002, kaj malgranda kvanto da lingvoj (Jako, Cola) ekzistas por simple esti tradukita al Parrot maŝinkodaj simboloj.

Ekzemploj de kodo
-----------------

Iuj ŝerce asertas, ke Perl signifas "patologie eklektika rubo-listigilo" pro la ofta uzo de signifaj punkciumaj karakteroj en la sintakso de la lingvo, kiel oni povas vidi en la jena kodero (kiu printas saluton kaj nombron):

```
# Ekzempla Perl-programo
$_ = "Saluton, mondo! La magia nombro estas 234542354.\n";
print;
s/\d+/-1/;
print;
```

kaj la rezulto:

```
Saluton, mondo! La magia nombro estas 234542354.
Saluton, mondo! La magia nombro estas -1.
```

La kvara linio de la ekzemplo montras la uzon de regulesprimoj.

Kiel pri C, konkursoj pri malfacile legeblaj kodoj estas interesa parto de la Perl-kulturo. Simile al malfacile legebla kodo, sed kun malsama celo, Perl-poezio estas la arto verki poemojn, kiuj fakte povas esti tradukitaj de perl. Ĉi tiu arto estas unika al Perl pro la granda kvanto de anglalingvaj vortoj en la lingvo.

Eksteraj ligiloj
----------------

* Kategorio Perl en la Vikimedia Komunejo (Multrimedaj datumoj)

* Arkivigite je 2004-08-15 per la retarkivo Wayback Machine - dmoz on Perl (*angle*)
* - Perlmonger's info site (*angle*)
* - Perlmonger's user group site (*angle*)
* - La Perl "Monaĥejo" (*angle*)
* - ActiveState - Perl por Vindozaj sistemoj (*angle*)
* - Comprehensive Perl Archive Network (*angle*)
* - Perl 6 prilaborado (*angle*)
* - Parrot virtuala maŝino (*angle*)
* - Perl Poezio (*angle*)


|  |  |
| --- | --- |
| Bibliotekoj | * PeEnEo: 3341
* GND: 4307836-9
* LCCN: sh95010633
* BNF: 124906490
* NKC: ph117992
* BNE: XX542605
 |