<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Perl</id>
		<title>Perl - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=Perl"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Perl&amp;action=history"/>
		<updated>2026-06-12T00:51:07Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Perl&amp;diff=345637&amp;oldid=prev</id>
		<title>Sysop: 1 revizi</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Perl&amp;diff=345637&amp;oldid=prev"/>
				<updated>2013-09-25T10:14:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 revizi&lt;/p&gt;
&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Starší verze&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Verze z 25. 9. 2013, 10:14&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=Perl&amp;diff=345636&amp;oldid=prev</id>
		<title>Sysop: + Nový článek - převzat z české Wikipédie</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=Perl&amp;diff=345636&amp;oldid=prev"/>
				<updated>2007-04-29T10:04:13Z</updated>
		
		<summary type="html">&lt;p&gt;+ Nový článek - převzat z české Wikipédie&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Perl''' je interpretovaný [[programování|programovací jazyk]] vytvořený [[Larry Wall]]em v roce [[1987]].&amp;lt;br /&amp;gt;&lt;br /&gt;
S rozvojem internetu se Perl stal velmi populárním nástrojem pro tvorbu [[CGI]] skriptů.&lt;br /&gt;
&lt;br /&gt;
Perl zahájil svou éru jako skriptovací jazyk, náhrada jazyka [[AWK]] a interpretru [[Bourne shell|sh]]. Největšího rozšíření dosáhl ve verzi 4 z roku [[1991]].&lt;br /&gt;
Verze 5 přinesla četná vylepšení, především výkonné datové struktury a možnost objektového programování. V poslední době získal Perl oblibu mimo jiné v bioinformatice. PC Magazin zařadil Perl v roce [[1998]] mezi finalisty soutěže Technical Excellence Award v kategorii Development Tool. Slovo Perl najdete v Oxford English Dictionary.&lt;br /&gt;
&lt;br /&gt;
Larry Wall se při konstrukci jazyka řídil heslem: ''dá se to udělat více způsoby'' (''there's more than one way to do it''). Umožňuje psát krátké programy jednoduše a rychle a přítom nebrání v psaní těch složitých. Jeden ze způsobů je přitom obvykle velmi stručný, takže Perl získal nezaslouženou pověst jazyka, ve kterém se tvoří nesrozumitelný a neudržovatelný kód. Tato kritika ale není oprávněná, Perl je vhodný k řešení malých i velkých problémů. Schopnosti a nástroje, které se používají u velkých projektů, lze použít i v krátkých skriptech.&lt;br /&gt;
&lt;br /&gt;
Dobrý programátor má podle Larryho Walla být líný, netrpělivý a arogantní (''Laziness, Impatience and Hubris'').&lt;br /&gt;
&lt;br /&gt;
== Výhody Perlu ==&lt;br /&gt;
* výhody interpretovaného jazyka, především rychlý vývoj bez nutnosti [[Překladač|kompilace]] a linkování&lt;br /&gt;
* přes 4000 volně dostupných modulů třetích stran skrz Comprehensive Perl Archive Network [http://www.cpan.org CPAN]. Pojmenování, kategorizace, dokumentace, testování a instalace modulů jsou standardizovány. Moduly zpřístuňují prakticky veškerá dostupná rozhraní a knihovny. Např. rozhraní Perlu pro databáze (DBI) podporuje databáze [[Oracle]], [[Sybase]], [[PostgreSQL]], [[MySQL]], [[SQLite]] a modul CGI.pm umožňuje lehce pracovat s HTML formuláři.&lt;br /&gt;
* dokumentace a literatura, komunita okolo Perlu, konference, news…&lt;br /&gt;
* efektivita programování: v programech, které nejsou přímo závislé na rychlosti běhu, je výhodnější jazyk, který vyžaduje méně řádek kódu&lt;br /&gt;
* dynamická práce s [[Operační paměť|pamětí]] (není třeba [[destruktor]]ů…) a pokročilé [[Datový typ|datové typy]] např. [[asociativní pole]] neboli hash (linearní seznamy a binární stromy již nejsou třeba)&lt;br /&gt;
* je [[svobodný software]], licencován pod [[Artistic License]] nebo [[GNU General Public License]]&lt;br /&gt;
* ve srovnání s kompilovanými jazyky lepší možnosti zabezpečení při běhu kódu&lt;br /&gt;
* snadné spojování již hotových komponent (modulů) stejně jako u [[Delphi]], [[Visual Basic]]u, [[PowerBuilder]]u, [[Tcl]], [[Microsoft Office]], [[Emacs]], atd. a navíc s možností širokého použití ([[Linux]], [[Unix]], [[Microsoft Windows|MS Windows]], [[VMS]], [[Palm OS]], [[Apache]], [[ASP]], [[CGI]], [[ISAPI]], [[OLE]], [[WSH]], [[WSC]], [[WxPerl]], atd.)&lt;br /&gt;
* převzetí osvědčených konstrukcí z ostatních jazyků, jako např. [[C (programovací jazyk)]], [[AWK]], [[sed]], [[Bourne shell|sh]], [[BASIC]], a dalších&lt;br /&gt;
* ukazatele na statické, dynamické i anonymní datové struktury&lt;br /&gt;
* umožňuje [[Imperativní programování|procedurální]] i [[objektově orientované programování]]&lt;br /&gt;
* snadná práce s textem a značkovacími jazyky ([[XML]], [[HTML]]…)&lt;br /&gt;
* [[regulární výraz]]y a jejich rychlost&lt;br /&gt;
* Perl podporuje znakovou sadu [[Unicode]] a je (byl) Y2K kompatibilní&lt;br /&gt;
* eval (možnost využít funkce překladače za běhu programu, takže můžeme vytvářet dynamický kód, resp. kód optimalizovat na rychlost za běhu)&lt;br /&gt;
* dynamicky volání procedur (název známe až za běhu programu)&lt;br /&gt;
* stabilita: mnoho let mnoha vývojáři vyvíjený programovací jazyk&lt;br /&gt;
* možnost použití inline [[C (programovací jazyk)]]/[[C++]] v Perlu nebo rozhraní Perlu pro externí C/C++ knihovny skrz XS nebo SWIG&lt;br /&gt;
* uzávěry (podprogramy si pamatují proměnné jenž potřebuje ke svému běhu)&lt;br /&gt;
* návěstí (řízení cyklů)&lt;br /&gt;
* automatické zavádění (pokud jméno funkce neexistuje pak Perl umožňuje spuštění definovaného kódu)&lt;br /&gt;
* Perl umí zacházet se zakódovanými webovými daty, mezi něž patří transakce u elektronickém obchodování&lt;br /&gt;
* Perl může být součástí web serverů čímž může dojít k zrychlení o 2000&amp;amp;nbsp;%&lt;br /&gt;
* [[mod_perl]] umožňuje web serveru [[Apache]] vložení Perlu s výhodami jako je při vložení [[PHP]]&lt;br /&gt;
* interpret Perlu může být vložen (embedded) do ostatních systémů, &amp;lt;code&amp;gt;#include &amp;lt;Perl.h&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
* šablony (write)…&lt;br /&gt;
&lt;br /&gt;
== Nevýhody Perlu ==&lt;br /&gt;
* nedisciplinovaný programátor může snadno vytvářet nesrozumitelný kód&lt;br /&gt;
* při některých aplikacích se může projevit neefektivnost interpretru ve srovnání s kompilovanými jazyky, zejména spotřeba paměti&lt;br /&gt;
* adresu odkazů není možno uložit do asociativního pole (hash)&lt;br /&gt;
* kruhové odkazy a problematika jejich destrukce (nutné vytvořit destruktor ručně)&lt;br /&gt;
* mnozí tvrdí že je to jazyk nevhodný pro výuku programování, ostatním stačí 'use strict;'&lt;br /&gt;
&lt;br /&gt;
== Budoucí vývoj (Perl 6 a VM Parrot) ==&lt;br /&gt;
V červenci roku [[2000]], hned po setkání na kterém byl odstartován projekt vývoje jazyka [http://dev.perl.org/perl6/ Perl 6], byla započata práce na návrhu virtuálního stroje (VM - Virtual Machine) s názvem [http://www.parrotcode.org/ Parrot]. Parrot je určen pro efektivní běh dynamických programovacích jazyků (primárně pro Perl 5, Perl 6, [[Python]] a [[Ruby]]). Jádro nové verze jazyka Perl tak bude kompletně přepsáno jako tomu bylo např. u projektu [[Mozilla]]. Také syntaxe jazyka se dosti zásadně změní a úplná [[zpětná kompatibilita]] bude zaručena jinými prostředky. Allison Randal v rozhovoru z května [[2004]] předpokládá, že betaverze jazyka Perl 6 se objeví do dvou let.&lt;br /&gt;
&lt;br /&gt;
== Ukázka kódu ==&lt;br /&gt;
Tradiční program „[[Hello world]]“:&lt;br /&gt;
&lt;br /&gt;
 print &amp;quot;hello, world!\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
Rozšířená verze tradičního programu:&lt;br /&gt;
&lt;br /&gt;
 # A sample Perl program&lt;br /&gt;
 $_ = &amp;quot;Hello, world! The magic number is 234542354.\n&amp;quot;;&lt;br /&gt;
 print;&lt;br /&gt;
 s/\d+/-1/;&lt;br /&gt;
 print;&lt;br /&gt;
&lt;br /&gt;
a její výstup:&lt;br /&gt;
&lt;br /&gt;
 Hello, world! The magic number is 234542354.&lt;br /&gt;
 Hello, world! The magic number is -1.&lt;br /&gt;
&lt;br /&gt;
Vysvětlení: ''print;'' v podstatě znamená ''print $_;'' (kde $_ je defaultní proměnná). ''s/\d+/-1/;'' (nebo také ''$_ =~ s/\d+/-1/;'') je [[regulární výraz]], jenž nahradí první nalezenou sekvenci číslic (celé číslo) číslem -1.&lt;br /&gt;
&lt;br /&gt;
Perl je dynamický programovací jazyk. Je možné používat kompilátor v samotném programu. Tady je příklad kalkulačky v jednom řádku kódu:&lt;br /&gt;
&lt;br /&gt;
  while (1) { print eval &amp;lt;&amp;gt;; }&lt;br /&gt;
&lt;br /&gt;
Lze pak zadat například:&lt;br /&gt;
&lt;br /&gt;
  5*5 &amp;lt;ENTER&amp;gt;&lt;br /&gt;
  $a = $b = 1; $a+$b &amp;lt;ENTER&amp;gt;&lt;br /&gt;
  for (1..1_000_000) { print +($a+$b+$_).„\n“; } &amp;lt;ENTER&amp;gt;&lt;br /&gt;
  sin($a)**0.5 &amp;lt;ENTER&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Složitější ukázkou je funkce, která vypíše [[Fibonacciho posloupnost]]:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;fib(100);&lt;br /&gt;
&lt;br /&gt;
 sub fib {&lt;br /&gt;
   my ($a, $b) = (0, 1);&lt;br /&gt;
   while ($b &amp;lt; $_[0]) {&lt;br /&gt;
     print &amp;quot;$b &amp;quot;;&lt;br /&gt;
     ($a, $b) = ($b, $a + $b);&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Výstupem tohoto programu by bylo:&lt;br /&gt;
&lt;br /&gt;
 1 1 2 3 5 8 13 21 34 55 89&lt;br /&gt;
&lt;br /&gt;
Perl neumožňuje tradiční způsob předání parametrů funkci. Hodnoty předávané při volání funkce jsou uloženy v poli @_.&lt;br /&gt;
&lt;br /&gt;
Práce s proměnnými je v Perlu poněkud odlišná od běžných jazyků ([[C (programovací jazyk)|C]]/[[C++]], [[Pascal (programovací jazyk)|Pascal]]):&lt;br /&gt;
&lt;br /&gt;
 $prom;  # skalární proměnná&lt;br /&gt;
 @prom;  # pole&lt;br /&gt;
 %prom;  # asociativní pole&lt;br /&gt;
&lt;br /&gt;
 $pozdrav = &amp;quot;Ahoj&amp;quot;;  # skalární proměnná obsahující řetězec znaků&lt;br /&gt;
&lt;br /&gt;
 @pole = (1, 2, 3);  # pole o třech prvcích&lt;br /&gt;
 $pole[1] = 4;       # v případě, že přistupujeme ke konkrétní položce,&lt;br /&gt;
                     # která je skalární hodnotou, umístíme před&lt;br /&gt;
                     # název proměnné symbol $&lt;br /&gt;
&lt;br /&gt;
 %skoly = (&amp;quot;pavel&amp;quot; =&amp;gt; &amp;quot;FI MUNI&amp;quot;, &amp;quot;petr&amp;quot; =&amp;gt; &amp;quot;FIT VUT&amp;quot;);&lt;br /&gt;
                     # asociativní pole, hodnoty jsou zadávány ve tvaru&lt;br /&gt;
                     # klíč =&amp;gt; hodnota&lt;br /&gt;
 print $skoly{&amp;quot;pavel&amp;quot;};&lt;br /&gt;
                     # vypíše: FI MUNI&lt;br /&gt;
                     # hodnota je opět skalární&lt;br /&gt;
&lt;br /&gt;
== Krása perlu ==&lt;br /&gt;
Larry Wall považuje sám sebe za umělce a Perl za umělecké dílo.&lt;br /&gt;
Následující program [http://perl.plover.com/obfuscated/] slouží jako malá ukázka, čeho je tento jazyk schopen. Program vypíše poměrně pomalu slova: ''Just another Perl / Unix hacker'' . Za tím účelem vytvoří 32 paralelních procesů, které složitě synchronizuje pomocí rour.&lt;br /&gt;
&lt;br /&gt;
 @P=split//,&amp;quot;.URRUU\c8R&amp;quot;;@d=split//,&amp;quot;\nrekcah xinU / lreP rehtona tsuJ&amp;quot;;sub p{&lt;br /&gt;
 @p{&amp;quot;r$p&amp;quot;,&amp;quot;u$p&amp;quot;}=(P,P);pipe&amp;quot;r$p&amp;quot;,&amp;quot;u$p&amp;quot;;++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord&lt;br /&gt;
 ($p{$_})&amp;amp;6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&amp;amp;&amp;amp;&lt;br /&gt;
 close$_}%p;wait until$?;map{/^r/&amp;amp;&amp;amp;&amp;lt;$_&amp;gt;}%p;$_=$d[$q];sleep rand(2)if/\S/;print&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Literatura ==&lt;br /&gt;
* [http://www.kit.vslib.cz/~satrapa/knihy/perlzel/ Perl pro zelenáče]: Pavel Satrapa, Neokortex, s.r.o., Na rovnosti 3, 130 00 Praha 3, ISBN 80-86330-02-8, 2000&lt;br /&gt;
* Programování v jazyce Perl: Larry Wall, Tom Christiansen &amp;amp; Randal L. Schwartz, [[Computer Press]], Hornochlupická 22, 140 00 Praha 4, 1997&lt;br /&gt;
* Programování v Perlu pro pokročilé: Sriram Srinivasan, Computer Press, ISBN 80-7226-079-0, 1998&lt;br /&gt;
* Naučte se Perl za 21dní: Laura Lemay, Computer Press, ISBN 80-7226-616-0, 2002&lt;br /&gt;
* [http://www.grada.cz/katalog/seznam/perl/ Perl - kapesní průvodce programátora]: Martin Kysela, Grada Publishing a.s., ISBN 80-247-1170-2, 2005&lt;br /&gt;
* [http://www.grada.cz/katalog/seznam/myslime-v-jazyku-perl/ Myslíme v jazyku Perl]: František Dařena, Grada Publishing a.s., ISBN 80-247-1147-8, 2005&lt;br /&gt;
&lt;br /&gt;
== Externí odkazy ==&lt;br /&gt;
* [http://www.perl.org/ www.perl.org] - Oficiální stránka Perlu (anglicky)&lt;br /&gt;
* [http://www.cpan.org/ www.cpan.org] - Bohatá kolekce software, modulů, skriptů a dokumentace (anglicky)&lt;br /&gt;
* [http://www.cpan.cz/ www.cpan.cz] - České stránky o Perlu&lt;br /&gt;
'''Články a učebnice:'''&lt;br /&gt;
* [http://www.linuxsoft.cz/article_list.php?id_kategory=210 Seriál Perl na linuxsoft.cz]&lt;br /&gt;
* [http://www.root.cz/serialy/perlicky/ Seriál Perličky na root.cz]&lt;br /&gt;
* [http://www.root.cz/serialy/regularni-vyrazy/ seriál Regulární výrazy na root.cz]&lt;br /&gt;
* [http://docs.linux.cz/programming/interpreted/perl/ Naučte se Perl]&lt;br /&gt;
'''Související projekty:'''&lt;br /&gt;
* [http://gtk2-perl.sourceforge.net/ gtk2-perl] - psaní GUI aplikací v Perlu nad GTK2&lt;br /&gt;
* [http://wxperl.sourceforge.net/ wxPerl] - psaní GUI aplikací v Perlu pomocí wxWidgets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:Počítačové jazyky]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>