Perl
| Perl | |
| | |
| Druh | Funkčný, objektový, procedurálny[1] |
|---|---|
| Dátum vzniku | December 1987[2] |
| Použitie | Všetky platformy |
| Typová kontrola | Dynamická |
| Tvorca | Larry 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íľnik | Prvá verzia | Popis |
|---|---|---|
| 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] | 2015 | Konzistentný, 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]
História
[upraviť | upraviť zdroj]Začiatky
[upraviť | upraviť zdroj]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
[upraviť | upraviť zdroj]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]
Perl 7
[upraviť | upraviť zdroj]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]
Použitie
[upraviť | upraviť zdroj]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]
Komunita
[upraviť | upraviť zdroj]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 2 3 4 5 About Perl [online]. perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- 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)
- 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)
- 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)
- 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)
- 1 2 Perl 6 renamed to Raku [online]. LWN.net, 2019-10-15, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- 1 2 3 The Perl Programming Language [online]. perl.org, [cit. 2026-10-04]. Dostupné online. (po anglicky)
- ↑ MediaWiki history [online]. MediaWiki.org, [cit. 2026-10-04]. Dostupné online. (po anglicky)
- 1 2 perl – The Perl 5 language interpreter [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- 1 2 3 4 perlfaq1 – General Questions About Perl [online]. perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ Perl [online]. Dictionary.com, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- 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)
- 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)
- ↑ A New Logo for Perl [online]. Perl Advent Calendar, 2024-12-23, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ CPAN [online]. Comprehensive Perl Archive Network, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ perl5004delta – what's new for perl5.004 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ perl56delta – what's new for perl v5.6.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- 1 2 3 Perl Source [online]. Comprehensive Perl Archive Network, [cit. 2026-10-04]. Dostupné online. (po anglicky)
- ↑ perl58delta – what is new for perl v5.8.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ perl5100delta – what is new for perl 5.10.0 [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ Perl 5.12.0 Release Announcement [online]. dev.perl.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ 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)
- ↑ 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)
- ↑ 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)
- ↑ CHROMATIC. A Plan for Pugs [online]. Perl.com, 2005-03-03, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ LESTER, Andy. Ponie has been put out to pasture [online]. The Perl Foundation, 2006-08-23, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ The Path to Raku [online]. GitHub (Raku/problem-solving), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ FOY, brian d. Announcing Perl 7 [online]. Perl.com, 2020-06-24, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ What happened to Perl 7? [online]. Perl Steering Council (blogs.perl.org), 2022-05-25, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ WALL, Larry. Wherefore Art, Thou? [online]. Linux Journal, 1997-03-01, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ RAYMOND, Eric S.. The Art of Unix Programming – Language Evaluations [online]. catb.org, 2003, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ perlfunc – Perl builtin functions [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ Perl Licensing [online]. dev.perl.org, [cit. 2026-10-03]. Dostupné online. Archivované 2011-01-22 z originálu. (po anglicky)
- ↑ perlguts – Introduction to the Perl API [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ 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)
- ↑ 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)
- ↑ MacPerl Development [online]. macperl.com, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ perlport – Writing portable Perl [online]. Perldoc Browser (perl.org), [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ LEONARD, Andrew. The joy of Perl [online]. Salon.com, 1998-10-13, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ RSA in 5 lines of perl [online]. cypherspace.org, [cit. 2026-10-03]. Dostupné online. (po anglicky)
- ↑ Obfuscated Perl Program [online]. Perl Paraphernalia (perl.plover.com), [cit. 2026-10-03]. Dostupné online. (po anglicky)
Iné projekty
[upraviť | upraviť zdroj]
Commons ponúka multimediálne súbory na tému Perl
Externé odkazy
[upraviť | upraviť zdroj]- Domáca stránka projektu (po anglicky)
- Perl dokumentácia (po anglicky)
- Perl Monks - legendárny komunitný portál venovaný Perl-u (po anglicky)
- CPAN - masívna knižnica použiteľného kódu (po anglicky)
- Bratislava Perl Mongers Archivované 2009-05-29 na Wayback Machine
- Slovenská stránka o Perl-e (neaktuálna) Archivované 2013-05-05 na Wayback Machine
- seriál o Perl-e na linuxsoft.cz Archivované 2005-08-19 na Wayback Machine
Zdroj
[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.