Hlavní navigace

Nebojte se velblouda!

23. 10. 2000
Doba čtení: 6 minut

Sdílet

Před časem na Rootu vyšel článek s názvem "Nebojte se hroznýše!" a pojednával o programovacím jazyku Python. To mě inspirovalo zvolat podobné heslo o trochu jiném jazyku...

Perl (Practical Extraction and Report Language) je velmi zajímavý jazyk oplývající neobvyklými možnostmi. V dnešním článku bych vám jej chtěl trochu přiblížit a kdoví, možná že mu propadnete stejně jako já.

Co je to Perl

Autorem Perlu je jistý pan Larry Wall, který jej původně vytvořil pro svou osobní potřebu. A jak už to bývá, z malé utilitky se vyklubal mocný nástroj. Oficiální verze 1 vyšla v prosinci roku 1987. Od té doby přešel jazyk mnohými úpravami a vylepšeními až do současné verze s označením 5.

Perl je optimalizovaný pro práci s textem, vyhledávání informací ze souborů a tisk sestav. Je také vhodným jazykem pro různé systémové úlohy. Sám jej používám jako elegantnější (rychlejší, snazší na programování) variantu než skriptování v shellu.

Vlastnosti Perlu jsou koktejl jazyka C, sed, awk, sh a možná i Pascalu, csh a Basicu. Syntaxe je pak nejvíce podobná „céčku“.

Perl nemá žádné teoretické limity na paměť a podobné hardwarové věcičky. Proměnné se nedeklarují (alokují a dealokují se automaticky), rekurze je neomezená a pole v paměti rostou podle současné potřeby. S klidem indiána dokážete jedním příkazem načíst obsah celého souboru do jedné řetězcové proměnné.

Perlu je jedno, jaké data máte v proměnné uloženy; ať to je řetězec nebo číslo, pracuje se s ním vždy stejně. Teprve podle kontextu operace se řetězec vnitřně překonvertuje na číselnou hodnotu nebo naopak.

Abychom si udělali obrázek, jaký Perl vlastně je, ukážeme si nejmenší program v Perlu, který vypíše pouze nějakou hlášku a skončí:

print "Ahoj lidi!";

Takový prográmek můžete spustit příkazem

perl <nazev_programu> 

nebo na začátek přidat

#!/usr/bin/perl

a soubor spouštět přímo.

Vidíte tu jednoduchost? Žádné hlavičky, patičky a deklarace – jde se přímo k jádru věci.

Interpretovaný jazyk

Perl je interpretovaným jazykem a to znamená, že se nekompiluje do strojového kódu, ale vykonává speciálním programem – interpretem jazyka. To má své výhody i nevýhody. Výhoda je v jednoduchosti spouštění a upravování programu – vždy pracujeme přímo se zdrojovými texty. Nevýhoda spočívá ve zpomalení výkonu a také v tom, že ke spuštění programu v Perlu musíme mít v počítači nainstalován jeho interpret. To je vážná nepříjemnost. Snad ji zmírní fakt, že interprety jsou volně šiřitelné.

Interpret Perlu lze docela určitě provozovat na těchto platformách:

  • AIX,
  • BeOS,
  • BSD/OS,
  • DOS,
  • FreeBSD,
  • HP-UX,
  • Hurd,
  • Irix,
  • Linux :-),
  • LynxOS,
  • MacOS,
  • OpenBSD,
  • OS/2,
  • Solaris,
  • SunOS,
  • Ultrix,
  • VMS,
  • Windows 3.1/95/98/2000/NT,
  • …a mnoho, mnoho dalších.

Silné programátorské nástroje

Mezi konstrukcemi jazyka Perl se skrývají opravdové „kanóny“, kterými si Perl získává své přívržence.

Regulární výrazy

Regulární výrazy jsou jedny z nejsilnějších nástrojů Perlu. Pokud už s Unixem (Linuxem) máte jisté zkušenosti, určitě mi dáte za pravdu. Regulární výrazy slouží pro práci s texty – k vyhledávání, nahrazování a podobně. Speciálními znaky určíte, jaký text se má vyhledat a co s ním vlastně chcete udělat. Více se o regulárních výrazech dozvíte z článků pana Satrapy.

Asociativní pole

Dalším nástrojem těžkého kalibru jsou asociativní pole. Kdekdo zná obyčejná pole z jiných programovacích jazyků. K jejich prvkům se přistupuje číselnými indexy. Asociativní pole jsou něco podobného s tím, že paměťové buňky místo čísel adresujete řetězcem!

Počet prvků v poli se samozřejmě může dynamicky měnit, mechanizmem hashování se dosahuje výborné rychlosti v přístupu k uloženým položkám.

Na první pohled nevýrazný prvek jazyka v sobě skýtá nebývalé možnosti. Asociativní pole jsou v Perlu opravdu hojně využívány. Plnohodnotně se jimi suplují datové typy záznam (C: struct, Pascal: record), objekty, tabulky a podobně.

Zkusme si malý příklad. Představte si, že děláte jakýsi účetní program, který bude sčítat výdaje v domácnosti: za jídlo, elektřinu, plyn, noviny, zábavu atd. Abyste tohle nějak rozumně naprogramovali, museli byste vytvářet datový typ, seznam nebo něco podobného, v něm pracně vyhledávat typy výdajů, přičítat a podobně. Kdyby se výčet druhů výdajů změnil, znamenalo by to relativně pracné přidávání nových položek do seznamu atd. V Perlu jednoduše použijete asociativní pole: klíčem (indexem) bude druh výdaje a hodnotou utracené peníze. Hotovo.

Objektově orientované programování

Objektově orientované programování je v poslední době velice módní záležitostí a i v Perlu si můžete užívat všech jeho vymožeností.

Objektově orientované programování se snaží řešení problémů přiblížit co nejvíce reálnému světu. Konstrukcí jazyka se vytvářejí objekty, které věrně popisují vlastnosti a chování skutečných věcí a interakce mezi nimi. Podstatnou výhodou takového přístupu je zapouzdření dat a obslužných funkcí (metod), polymorfismus a samozřejmě i dědičnost vlastností a chování mezi jednotlivými objekty. Všechny tyto prvky moderního programovacího stylu si v Perlu můžete vychutnat.

A další…

Perl vyhovuje standardu POSIX a má dobrou podporu neanglických jazyků (i češtiny :-).

Kód Perlu lze připojit k aplikacím napsaným v jazyku C nebo C++. Může tedy volat nebo být volán vaším „céčkařským“ kódem přes dokumentované rozhraní.

Perl přímo podporuje databázové formáty DBM, NDBM, SDBM, GDBM a Berkeley DB. Importem vhodné knihovny není samozřejmě problém ani využití SQL a podobně.

Množství knihoven

Jak je zvykem z naprosté většiny programovacích jazyků, i v Perlu si můžete vytvářet znovu použitelné moduly kódu – knihovny. Kromě toho je na Internetu nepřeberné množství dalších (zcela free) knihoven. Veškeré materiály kolem Perlu se shromažďují do archívu známého pod zkratkou CPAN (Comprehensive Perl Archive Network), který má zrcadla na serverech po celém světě (viz odkazy níže).

S přídavnými moduly můžete psát CGI, pracovat s databázemi, Internetem – možností je opravdu hodně. My si ale ukážeme něco jiného, neméně atraktivního. Máte-li kromě Perlu nainstalovánu také knihovnu GTK a modul GTK-Perl, můžete psát aplikace pro X-Window.

#!/usr/bin/perl -w

# Načtení přídavných modulů
use locale;
use Gtk;

# Definicice procedury (funkce)
sub quit_app {
  Gtk->exit(0);
  return 0;
}


# Hlavní program

Gtk->init();                            # Inicializace GTK
Gtk->set_locale();                      # Podpora národního prostředí

$window = new Gtk::Window('toplevel');  # Vytvoření nového okna...
$window->set_title('Ahoj lidi!');       # ...s titulkem 'Ahoj lidi!'
$window->border_width(20);              # ...a okrajem 20 px
$window->signal_connect("delete_event",
  \&quit_app);                          # Připojení obsluhy signálu pro
                                        # uzavření okna aplikace

$button = new Gtk::Button('Ahoj!');     # Vytvoření tlačítka
$window->add($button);                  # Vložení tlačítka do okna
$button->signal_connect('clicked',
  \&quit_app);                          # Připojení obsluhy signálu pro
                                        # stisk tlačítka (aplikace se ukončí)

$button->show();                        # Povolení zobrazení tlačítka
$window->show();                        # Zobrazení okna aplikace

Gtk->main();                            # Spuštění hlavního cyklu programu

Spuštěním uvedeného zdrojového kódu by se vám mělo objevit asi takovéto okno:

Obrázek aplikace Perlu

Stinné stránky

Teoretici programovacích jazyků nad Perlem šílí. A mají proč. Mnoho základních rysů jiných programovacích jazyků Perl naprosto popírá: proměnné se nedeklarují, nelze vytvořit vlastní datové typy (ono to po pravdě řečeno ani moc není třeba – viz asociativní pole), volání funkce na levé straně přiřazovacího příkazu, stejná věc v různém kontextu znamená pokaždé něco jiného a tak dále.

Přestože jde o jazyk velmi praktický a silný, nedoporučil bych jej začátečníkům v programování. Jeho syntaxe je totiž velice rozevlátá – jednu stejnou věc lze v Perlu zapsat několika různými způsoby – a to by pro ty, kteří se obecné základní principy programování teprve učí, mohlo být poněkud matoucí.

Odkazy

Jestliže jste se posledním odstavcem nenechali znechutit a máte zájem se na Perl podívat trochu víc zblízka, zkuste si třeba některý z následujících odkazů (mimo jiné na nich zjistíte, proč se tento článek jmenuje „Nebojte se velblouda“ :-):

www.perl.org
www.perl.com
www.perl.cz

www.cpan.org
Oficiální prohledávač archívu CPAN
Další prohledávač CPAN archívu
CPAN na sunsite.mff.cu­ni.cz
Oficiální FTP archív CPANu
FTP archív CPANu na ftp.muni.cz

CS24_early

www.gtk.org
GTK+ Tutorial
Gtk-Perl Tutorial

Perl je kontroverzní jazyk. Má své odpůrce i příznivce. Záleží na každém, ke které skupině se přiřadí. Tento článek si dal za úkol Perl představit a ukázat jeho silné i slabé stránky. Snad se mi to povedlo. (Neskrývám, že jsem jeho přívržencem a tak jsem ho možná příliš vychválil.)

Byl pro vás článek přínosný?

Autor článku

Michal Burda vystudoval informatiku a aplikovanou matematiku a nyní pracuje na Ostravské univerzitě jako odborný asistent. Zajímá se o data mining, Javu a Linux.