Perl

**Perl** estas komputila programlingvo kreita de Larry Wall en 1987 kiu heredis trajtojn 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 el ili), estas normale literumata nomuskle, 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 ĉeftipa 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.

## Realigo 
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ŭ bezonas la kodon por plenumi.

La nuna versio 5.8 subtenas Unikodon — ne nur en la traktataj tekstoj, sed ankaŭ en la nomoj de la programaj objektoj, ekz-e

```perl
use utf8; 	   # --- ebligas uzi unikodajn literojn en la nomoj
my $ℤ = "Zamenhofo";
my @μsofto = qw( cp852 cp1251 cp1252 );
my @ĉirkaŭaĵo;
print $ℤ, "\n";
```

Perl 6 estas prilaborata de pluraj jaroj. Ĝi funkcias per virtuala maŝino nun prilaborata kiel ebla multlingvokapabla arĥitekturo.

## Regaj strukturoj 
La bazaj regaj strukturoj unuavide similas al tiuj de la programlingvoj C kaj Java.
Tamen ili malsimilas, kiam ili regas nur unu ordonon. Alia diferenco estas, ke Perl enkondukas regan strukturon **unless**, kiu estas simple la kontraŭo de la kutima kondiĉa ordono **if** (Esperante «se»).

### Iteracioj 
* se necesas ripeti plurajn ordonojn uzu { kaj }
 **while** (*Bulea esprimo*) {
     *ordono(j)*
 }
* varianto, por la okazo ke estas nur unu ordono (rimarku ke ne necesas krampoj ĉirkaŭ la bulea esprimo)
 *ordono* **while** *Bulea esprimo*;

*while* signifas «dum».

 **do** {
     *ordono(j)*
 } **while** (*Bulea esprimo*);

 **for** (*pravalorizo* ; *finkondiĉo* ; *alkrementa ordono*) {
     *ordono(j)*
 }

### Kondiĉoj 
* Se estas pluraj ordonoj
 **if** (*Bulea esprimo*) {
     *ordono(j)*
 }
* se estas nur unu ordono
 *ordono* **if** *Bulea esprimo*;

* kun else
 **if** (*Bulea esprimo 1*) {
     *ordono(j)*
 } **elsif** (*Bulea esprimo 2*)  {
     *ordono(j)*
 } **else** {
     *ordono(j)*
 }

*else* signifas «aliokaze», kaj *elsif* estas valizvorto el «else» kaj «if».

Anstataŭ negi la Bulean esprimon, oni povas uzi la ordonon **unless** (Esperante «se ne», «krom se»):

* Se estas pluraj ordonoj:
 **unless** (*Bulea esprimo*) {
     *ordono(j)*
 }
* varianto, se estas nur unu ordono
 *ordono* **unless** *Bulea esprimo*;

* kun **else**:
 **unless** (*Bulea esprimo*) {
     *ordono(j)*
 } **else** {
     *ordono(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.

## Ekzempla Perl-programo 
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):

```perl
# 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 
* http://dmoz.org/Computers/Programming/Languages/Perl/  - dmoz on Perl (*angle*)
* http://www.perl.org - Perlmonger's info site (*angle*)
* http://www.pm.org - Perlmonger's user group site (*angle*)
* http://www.perlmonks.org - La Perla «Monaĥejo» (*angle*)
* http://activestate.com - ActiveState - Perl por Vindozaj sistemoj (*angle*)
* http://www.cpan.org/ - Comprehensive Perl Archive Network (*angle*)
* http://dev.perl.org/perl6/  - Perl 6 prilaborado (*angle*)
* http://www.parrotcode.org/  - Parrot virtuala maŝino (*angle*)
* http://www.perlmonks.org/index.pl?node=Perl%20Poetry - Perl Poezio (*angle*)


Kategorio:Libera programaro