Perl

El Vikipedio, la libera enciklopedio
Saltu al: navigado, serĉo
Disambig.svg Por samtitola komunumo en Sarlando, Germanio, vidu Perl (Sarlando).
Perl
Paradigmo: Plurparadigma:
Objektema, ĝenerala, procedura, funkcia programadoj k. a.
Aperis en: 1987
Aŭtoro(j): Larry Wall
Aktuala versio: 5.22.1 (2015-12-13)
Tipa sistemo: dinamika, implicita, malforta
Kreita sub la influo de: awk, sed, sh
Havas influon sur: Ruby
Permesilo(j): GPL, Artistic License
Retejo: http://www.perl.org/
v  d  r
Information icon.svg

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[redakti | redakti fonton]

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[redakti | redakti fonton]

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[redakti | redakti fonton]

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[redakti | redakti fonton]

  • 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[redakti | redakti fonton]

  • 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[redakti | redakti fonton]

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[redakti | redakti fonton]

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[redakti | redakti fonton]