Preskočiť na obsah

Perl

z Wikipédie, slobodnej encyklopédie
Perl

DruhFunkčný, objektový, procedurálny[1]
Dátum vznikuDecember 1987[2]
PoužitieVšetky platformy
Typová kontrolaDynamická
TvorcaLarry Wall
Používané prípony.pl, .pm, .t

Perl (Practical Extraction and Report Language)[3] je univerzálny, interpretovaný (t.j. netreba ho kompilovať) programovací jazyk, vyvinutý v roku 1987, Larrym Wallom, lingvistom, ktorý pracoval ako správca systémov v NASA.[4] Zámerom bolo spraviť jazyk praktický (ľahko používateľný, výkonný, kompletný) a nie nevyhnutne pekný (elegantný, minimalistický).[5] Jazyk prešiel viacerými vývojovými míľnikmi:

MíľnikPrvá verziaPopis
Perl 1 ("minulosť Perl-u")1987[2]Nástroj pre správcov systémov, niečo medzi skriptovaním v Unixovom shell-i a programovaním v C.
Perl 5 ("súčasnosť Perl-u")1994[2]Výkonný, univerzálny jazyk hlboko ponorený do bohatého dedičstva.
Perl 6 (od roku 2019 Raku, samostatný jazyk)[6][7]2015Konzistentný, koherentný redizajn jazyka, aby obstál v konkurencii moderných jazykov nasledujúcich 25 rokov.

Pôvodne bol Perl vyvinutý na manipuláciu textu, dnes sa používa v mnohých oblastiach, od správy systémov, programovanie webov, sieťové programovanie, vývoj GUI, programovanie hier a 3D grafiku pomocou OpenGL, až po webové aplikácie, akou bola v začiatkoch napríklad Wikipédia.[5][8] Perl 5 beží na viac ako 100 platformách od prenosných zariadení až po mainframy.[1]

Medzi hlavné črty Perl-u patrí:

  • masívna knižnica použiteľného kódu
  • kultúra best practices a testovania
  • priateľská a otvorená komunita

Programovať v Perl-e sa dá rôznymi štýlmi v závislosti na projekte, dostupnom čase, očakávanej potreby údržby programu, osobnom štýle. Moto jazyka je TIMTOWTDI (There's more than one way to do it),[9] čo umožňuje tvoriť pekný kód ale aj ťažko čitateľný neporiadok.

Názov a symboly

[upraviť | upraviť zdroj]

Wall chcel jazyk pôvodne nazvať „pearl“ s výkladom Practical Extraction and Report Language; keď sa však dopočul o staršom grafickom jazyku s rovnakým názvom, skrátil ho na „perl“.[3] Neskôr pridal aj žartovný výklad Pathologically Eclectic Rubbish Lister, ktorý uvádza aj oficiálna dokumentácia.[3][9] Názov sa spočiatku písal malými písmenami; približne v čase Perlu 4 sa ustálilo rozlišovanie medzi „perl“ (program, ktorý spúšťa skripty) a „Perl“ (jazyk).[3][10] Podľa oficiálnych častých otázok (FAQ) Perl nie je skratka, a preto by sa nemal písať „PERL“.[10] V americkej angličtine sa vyslovuje [purl], v britskej /pɜːl/.[11]

Prvé vydanie knihy Programming perl od Larryho Walla a Randala Schwartza vydalo nakladateľstvo O'Reilly v roku 1991.[12][13] Pre ťavu na obálke sa knihe hovorí „Camel Book“.[3][12] V decembri 2024 skupina členov komunity zverejnila nové logo jazyka s ťavou, ktoré je oddelené od obrázka na obálke knihy nakladateľstva O'Reilly a šíri sa pod licenciou Creative Commons CC BY.[14]

Larry Wall začal Perl vytvárať, keď narazil na problém, ktorý nedokázal ľahko vyriešiť nástrojmi awk a shell.[3] Podľa článku k 30. výročiu jazyka ho vyvinul počas zamestnania v spoločnosti System Development Corporation, ktorá sa neskôr stala súčasťou firmy Unisys.[13] Verzia 1.000 vyšla 18. decembra 1987.[2] Perl 2 z júna 1988 priniesol vylepšený mechanizmus regulárnych výrazov a Perl 3 z októbra 1989 podporu binárnych dátových prúdov.[2][13] Perl 4 vyšiel v marci 1991 spolu s prvým vydaním knihy Programming Perl.[2][13] Poslednou verziou tejto rady bola 4.036 z februára 1993.[2]

Perl 5.000 vyšiel 17. októbra 1994. Bol takmer úplným prepisom interpretera a priniesol objekty, referencie, lexikálne premenné a opakovane použiteľné moduly, vďaka ktorým bolo možné rozširovať jazyk bez zmien v samotnom interpreteri.[2][13] V máji 1994 vznikla e-mailová konferencia perl5-porters, ktorá slúži na koordináciu vývoja a prenášania Perlu 5 na rôzne platformy.[12] Archív modulov CPAN (Comprehensive Perl Archive Network) je online od októbra 1995; v októbri 2026 obsahoval 47 819 distribúcií od 14 750 autorov.[15]

Verzia 5.004 z mája 1997 pridala modul CGI.pm a podporu systémov Windows, Plan 9, QNX a AmigaOS.[2][16] Modul CGI.pm prispel k rozšíreniu Perlu ako jazyka na písanie skriptov pre internet.[13] Perl 5.6 z marca 2000 priniesol podporu 64-bitových systémov, Unicode a kľúčové slovo our;[17] od tejto verzie sú stabilné vetvy označené párnymi číslami (5.8, 5.10…) a vývojové nepárnymi.[18] Perl 5.8 z júla 2002 zlepšil podporu Unicode a priniesol novú implementáciu vstupu a výstupu (PerlIO) a vlákien.[2][19] Perl 5.10, vydaný 18. decembra 2007 k 20. výročiu prvej verzie, priniesol napríklad príkaz given/when a operátor smart match.[13][20]

Od verzie 5.11 vychádza každý mesiac vývojová verzia a každú jar nová stabilná verzia.[21] Aktuálnou stabilnou verziou je k októbru 2026 Perl 5.44.0, vydaný 15. júla 2026.[22][18]

Perl 6 a Raku

[upraviť | upraviť zdroj]

V roku 2000 Larry Wall ohlásil prácu na novej verzii jazyka, Perl 6; jedným z jej hlavných cieľov bolo, aby sa jazyk mohol ďalej vyvíjať.[23] Návrh vychádzal z návrhov, ktoré posielala komunita (tzv. RFC), a Wall ho opisoval v sérii dokumentov nazvaných Apocalypses.[24] V roku 2005 vznikla implementácia Perlu 6 v jazyku Haskell nazvaná Pugs.[25] Projekt Ponie, ktorý mal ako súčasť plánu prechodu na Perl 6 spojiť interpreter Perlu 5 s virtuálnym strojom Parrot, bol v roku 2006 ukončený.[26]

V októbri 2019 bol Perl 6 premenovaný na Raku.[6][27] Podľa stránky perl.org je Raku sesterský jazyk z rodiny Perl, ktorý nie je určený ako náhrada Perlu, ale ako samostatný jazyk s vlastným vývojovým tímom.[7][1]

V júni 2020 bol na konferencii The Perl Conference in the Cloud ohlásený Perl 7, ktorý mal byť verziou 5.32 s modernejšími predvolenými nastaveniami.[28] Plán vyvolal rozsiahle diskusie, pretože by narušil spätnú kompatibilitu časti existujúceho kódu. V roku 2022 riadiaca rada vývoja (Perl Steering Council) oznámila, že číslo verzie sa zmení na 7.0 až vtedy, keď nové vlastnosti budú spolu predstavovať dostatočne veľký krok vpred.[29]

Vlastnosti

[upraviť | upraviť zdroj]

Larry Wall uvádza ako tri hlavné cnosti programátora lenivosť, netrpezlivosť a pýchu (laziness, impatience and hubris).[3] Jednou z myšlienok, ktoré pri návrhu Perlu zdôrazňuje, je, že veci, ktoré sú rozdielne, majú aj rozdielne vyzerať.[30]

Perl má tri hlavné typy premenných – skaláry, polia a hašovacie tabuľky (asociatívne polia). Typ premennej určuje znak pred jej názvom (tzv. sigil): $ pre skalár, @ pre pole a % pre hašovaciu tabuľku.[5] Jazyk podporuje objektovo orientované, procedurálne a funkcionálne programovanie a obsahuje výkonné nástroje na spracovanie textu, vďaka ktorým sa hodí na prácu s HTML, XML a inými značkovacími aj prirodzenými jazykmi.[1] Rozhranie DBI umožňuje prácu s databázami (Oracle, PostgreSQL, MySQL a ďalšími), cez rozhrania XS alebo SWIG sa dá Perl prepojiť s externými knižnicami v jazykoch C a C++ a interpreter Perlu možno vložiť aj do iných systémov, napríklad webových či databázových serverov.[1]

Eric Raymond považuje za najsilnejšiu stránku Perlu jeho mimoriadne silné zabudované prostriedky na spracovanie textových, riadkovo orientovaných údajov pomocou vzorov, v čom je podľa neho neprekonateľný.[31] Dokumentácia vstavaných funkcií o ich rozdielnom správaní v rôznych kontextoch žartom poznamenáva, že „vo všeobecnosti robia to, čo chcete, pokiaľ nechcete konzistentnosť“.[32]

Perl je slobodný softvér; šíri sa pod dvoma licenciami, Artistic License a GNU General Public License (verzia 1 alebo ľubovoľná neskoršia), z ktorých si používateľ môže vybrať.[33]

Ukážka kódu

[upraviť | upraviť zdroj]

Program „Hello, world“ v Perle:[5]

print "Hello, world\n";

Práca so skalárom, poľom a hašovacou tabuľkou:[5]

my $animal = "camel";                                   # skalár
my @animals = ("camel", "llama", "owl");                # pole
my %fruit_color = (apple => "red", banana => "yellow"); # hašovacia tabuľka

print $animals[0];          # vypíše camel
print $fruit_color{"apple"}; # vypíše red

Implementácia

[upraviť | upraviť zdroj]

Pri preklade prechádza strom operácií niekoľkými fázami vrátane vyhodnocovania konštantných výrazov (constant folding), šírenia kontextu a optimalizácie typu peephole.[34] Keďže syntaktickú analýzu môže ovplyvniť kód vykonaný ešte počas prekladu (napríklad v bloku BEGIN), medzi programátormi sa hovorí, že Perl (jazyk) dokáže analyzovať iba perl (program).[35] Jeffrey Kegler v roku 2011 formálne dokázal domnienku Adama Kennedyho, autora nástroja PPI, že syntaktická analýza Perlu je vo všeobecnosti nerozhodnuteľná.[36] Pre klasický systém Mac OS existoval samostatný port MacPerl, ktorý napísal Matthias Neeracher.[37] Väčšina Perlu je prenosná medzi operačnými systémami;[38] jeho zdrojový kód sa dá skompilovať na viac ako 100 platformách.[18]

Podľa oficiálnych FAQ sa Perl hodí najmä na rýchle prototypovanie, systémové nástroje, správu systémov, prístup k databázam, grafické programovanie, prácu so sieťou a programovanie pre web.[10] V druhej polovici 90. rokov vzniklo veľa webových aplikácií a stránok využívajúcich Perl, napríklad IMDb, Craigslist, Bugzilla a cPanel.[13] Doug Sheppard ho v roku 2000 označil za „švajčiarsku armádnu motorovú pílu medzi skriptovacími jazykmi“.[4] Časopis Salon v roku 1998 citoval jeho priaznivcov, podľa ktorých je Perl nenahraditeľnou „lepiacou páskou“, ktorá drží pohromade celý web.[39]

Perl má podľa stránky perl.org celosvetovú komunitu s viac ako 230 miestnymi skupinami, e-mailovými konferenciami a diskusnými webmi; rozvoj jazyka podporuje nadácia The Perl Foundation.[7]

Randal Schwartz od konca 80. rokov podpisoval svoje e-maily a príspevky v Usenete vetou „Just another Perl hacker,“ (skratka JAPH) a neskôr ju začal písať ako program v Perle. Ďalší programátori potom začali písať dômyselné alebo zámerne nečitateľné programy s rovnakým výstupom.[10] Známy je aj podpis s implementáciou šifry RSA na päť riadkov, napísaný čiastočne v Perle a čiastočne v kalkulačke dc.[40]

Nasledujúci program, ktorý vypíše text „Just another Perl / Unix hacker“, získal druhú cenu v 5. ročníku súťaže Obfuscated Perl Contest:[41]

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

Referencie

[upraviť | upraviť zdroj]
  1. 1 2 3 4 5 About Perl [online]. perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  2. 1 2 3 4 5 6 7 8 9 10 perlhist – the Perl history records [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  3. 1 2 3 4 5 6 7 RICHARDSON, Marjorie. Larry Wall, the Guru of Perl [online]. Linux Journal, 1999-05-01, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  4. 1 2 SHEPPARD, Doug. Beginner's Introduction to Perl [online]. Perl.com (O'Reilly Media), 2000-10-16, [cit. 2026-10-03]. Dostupné online. Archivované 2011-06-05 z originálu. (po anglicky)
  5. 1 2 3 4 5 perlintro – a brief introduction and overview of Perl [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  6. 1 2 Perl 6 renamed to Raku [online]. LWN.net, 2019-10-15, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  7. 1 2 3 The Perl Programming Language [online]. perl.org, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  8. ↑ MediaWiki history [online]. MediaWiki.org, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  9. 1 2 perl – The Perl 5 language interpreter [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  10. 1 2 3 4 perlfaq1 – General Questions About Perl [online]. perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  11. ↑ Perl [online]. Dictionary.com, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  12. 1 2 3 ASHTON, Elaine. The Timeline of Perl and its Culture (v3.0_0505) [online]. history.perl.org, 1999, [cit. 2026-10-03]. Dostupné online. Archivované 2013-01-11 z originálu. (po anglicky)
  13. 1 2 3 4 5 6 7 8 HOLLOWAY, Ruth. Perl turns 30 and its community continues to thrive [online]. Opensource.com, 2017-10-11, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  14. ↑ A New Logo for Perl [online]. Perl Advent Calendar, 2024-12-23, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  15. ↑ CPAN [online]. Comprehensive Perl Archive Network, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  16. ↑ perl5004delta – what's new for perl5.004 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  17. ↑ perl56delta – what's new for perl v5.6.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  18. 1 2 3 Perl Source [online]. Comprehensive Perl Archive Network, [cit. 2026-10-04]. Dostupné online. (po anglicky)
  19. ↑ perl58delta – what is new for perl v5.8.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  20. ↑ perl5100delta – what is new for perl 5.10.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  21. ↑ Perl 5.12.0 Release Announcement [online]. dev.perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  22. ↑ TIMMERMANS, Leon. Perl 5.44.0 is now available [online]. perl.perl5.porters (nntp.perl.org), 2026-07-15, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  23. ↑ TORKINGTON, Nathan. Transcription of Larry's talk [online]. perl.perl6.meta (nntp.perl.org), 2000-10-17, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  24. ↑ WALL, Larry. Apocalypse 1: The Ugly, the Bad, and the Good [online]. dev.perl.org, [cit. 2026-10-03]. Dostupné online. Archivované 2010-11-23 z originálu. (po anglicky)
  25. ↑ CHROMATIC. A Plan for Pugs [online]. Perl.com, 2005-03-03, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  26. ↑ LESTER, Andy. Ponie has been put out to pasture [online]. The Perl Foundation, 2006-08-23, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  27. ↑ The Path to Raku [online]. GitHub (Raku/problem-solving), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  28. ↑ FOY, brian d. Announcing Perl 7 [online]. Perl.com, 2020-06-24, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  29. ↑ What happened to Perl 7? [online]. Perl Steering Council (blogs.perl.org), 2022-05-25, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  30. ↑ WALL, Larry. Wherefore Art, Thou? [online]. Linux Journal, 1997-03-01, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  31. ↑ RAYMOND, Eric S.. The Art of Unix Programming – Language Evaluations [online]. catb.org, 2003, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  32. ↑ perlfunc – Perl builtin functions [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  33. ↑ Perl Licensing [online]. dev.perl.org, [cit. 2026-10-03]. Dostupné online. Archivované 2011-01-22 z originálu. (po anglicky)
  34. ↑ perlguts – Introduction to the Perl API [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  35. ↑ SCHWARTZ, Randal L.. On Parsing Perl [online]. PerlMonks, 2000-12-04, [cit. 2026-10-03]. Dostupné online. Archivované 2007-09-27 z originálu. (po anglicky)
  36. ↑ KEGLER, Jeffrey. Perl and Parsing 11: Are all Perl programs parseable? [online]. blogs.perl.org, 2011-10-07, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  37. ↑ MacPerl Development [online]. macperl.com, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  38. ↑ perlport – Writing portable Perl [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
  39. ↑ LEONARD, Andrew. The joy of Perl [online]. Salon.com, 1998-10-13, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  40. ↑ RSA in 5 lines of perl [online]. cypherspace.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
  41. ↑ Obfuscated Perl Program [online]. Perl Paraphernalia (perl.plover.com), [cit. 2026-10-03]. Dostupné online. (po anglicky)

Iné projekty

[upraviť | upraviť zdroj]
  • Spolupracuj na Commons Commons ponúka multimediálne súbory na tému Perl

Externé odkazy

[upraviť | upraviť zdroj]

Tento článok je čiastočný alebo úplný preklad článkov Perl na anglickej Wikipédii a Perl na českej Wikipédii.