PERL od A po Z

21. 7. 2004
Doba čtení: 5 minut

Sdílet

Určite sa vám už mnohokrát stalo, že ste potrebovali nejaký nástroj, na čo awk nestačil, a na čo by bolo C/C++ až príliš zložité. Na to všetko ale aj na omnoho viac vecí slúži PERL - Practital Extraction and Report Language (Praktický jazyk pre výbery a tlačové zostavy). Otcom PERLU je Larry Wall ktorý ho vytvoril v roku 1987.

Larry bol v tom čase známy najmä ako autor známeho programu patch a čítačky diskusných skupín Usenetu – rn. PERL môžeme použiť takmer na všetko, čo dokáže C/C++. Od tvorby CGI skriptov (ale aj fastCGI skriptov), cez skripty na uľahčenie administrácie serverov (napríklad ovládanie servera prostredníctvom wap, sms alebo e-mailu) až po klasické GUI programy. PERL je vhodný práve pre vás, ak ste:

  • systémový administrátor, ktorý potrebuje obecne použiteľný skriptovací jazyk
  • skúsený unixový užívateľ, ktorý si chce rozšíriť svoje vedomosti
  • administrátor webserveru, na ktorom bežia CGI skripty
  • webmaster, ktorý chce robiť dynamické webové aplikácie
  • programátor, ktorý hľadá jazyk na rýchle písanie prototypov svojich programov
  • človek, ktorý hľadá nejaký nástroj na riešenie bežných problémov

PERL je nezávislý na konkrétnej platforme, čiže bez problémoch pobeží na operačných systémoch MS Windows, MacOS a UNIX (na všetkých OS typu UNIX, tj. Linux, BSD, Solaris…). Dokonca v UNIXových systémoch dosť často býva aj štandardne nainštalovaný, takže s jeho inštaláciou nebudete mať problémy.

PERL nevyžaduje žiadne ďalšie programy, stačí mu len váš obľúbený textový editor (Pozor! Nie procesor! Tj. MS WORD…:)) ako Notepad vo Windowse, Emacs alebo Vi v Unixe atď… Vi a Emacs dokážu dokonca aj zvýrazňovať syntax zdrojového kódu. PERL sa dá stiahnuť na stránke www.perl.com. K dispozícii je tam download pre všetky najpoužívanejšie platformy. Ďalšia z obrovských výhod PERLu je archív CPAN (www.cpan.org). Archív CPAN je najrozsiahlejší archív zdrojových kódov PERLu. Stále ak idete písať nejaký program, skúste sa najprv pozrieť do CPANu… Zaručene tam nájdete mnoho modulov, ktoré vám maximálne uľahčia prácu. Sú tam napríklad moduly pre prácu so sieťovými protokolmi (a to aj IRC, SSH…), databázami, GUI rozhraniami…

„Ahoj svet!“

Napíšme si jednoduchý skript, ktorý v konzole vypíše klasickú učebnicovú hlášku „Ahoj Svet!“.

#!/usr/bin/perl
# moj prvy program

print "Ahoj svet! \n";
  • Prvý riadok obsahuje znaky #! a cestu k interprétu PERLu. Tento riadok sa používa len v UNIXe a pri písaní CGI skriptov, ktoré budeme spúšťať pod Apachom. Tento prvý riadok je potrebný aj pod Windowsom, ak píšete nejaké CGI skripty. Takže vo Windowse by prvý riadok vyzeral asi tak: #!C:\Perl\bin\per­l.exe.
  • Druhý riadok označuje komentár, čiže všetko, čo je za znakom #, nebude perl interpretovať.
  • Tretí riadok už napíše samotnú hlášku, príkaz print slúži na vypísanie textu na štandartný výstup. Reťazce sú klasicky uzavreté v úvodzovkách alebo v apostrofoch. Za každým príkazom je bodkočiarka. Ešte jedno malé upozornenie: PERL JE CASE-SENSITIVE, čiže print, Print a PRINT sú tri rozdielne veci a správne je len print (ďalšie dve možnosti nemajú pre PERL zmysel). Všimnite si ešte bodčiarku (;) na konci riadku. Za každým príkazom v PERLy ju treba napísať, slúži ako oddeľovač príkazov.

Napísaný skript spustíme pod Unixom príkazom:

% chmod +x ahoj.pl
% ./ahoj.pl

pod Windowsom

C:\Perl\bin\> perl ahoj.pl

Ak príponu .pl vo Windowse asociuete k programu Perl.exe a spustíte ho pomocou ikony, uvidíte obyčajné bliknutie okna. Program sa otvorí a hneď po ukončení zatvorí.

Premenné

Premenné v PERLy obsahujú skalárne dáta, čo sú vlastne inými slovami povedané reťazce a čísla. Premenné sa označujú znakom dolára na začiatku názvu. Ako som už písal, PERL je case-sensitive, čiže $premenna, $PREMENNA a $Premenna sú tri rôzne premenné. Na rozdiel od iných jazykov typu C/C++/C# a Java v PERLy sa netreba zaoberať konverziou z jedného typu na druhý, preto lebo v PERLe je to už automatizované.

Názov premennej začína znakom dolára ($), za ktorím je buď podčiarkovník (_), alebo hociaké ASCII písmeno. Názov premennej môže byť dlhý maximálne 255 znakov. Musím však upozorniť, že premenná $_ je jedna zo špeciálnych premenných PERLu a jej použitie si ukážeme neskôr.

Tu sú príklady správne napísaných premenných:

$a
$premenna
$dlha_premenna
$c220

V PERLe sa premenné môžu inicializovať podľa potreby, avšak neinicializované premenné budú mať nedefinovanú hodnotu. Neskôr sa naučíme, ako otestovať, či je premenná definovaná, a ako ju určiť ako nedefinovanú.

Hodnota k premennej sa priradzuje klasicky pomocou priradzovacieho znamienka „=“. Napríklad:

$cislo = 10;
$retazec = "Toto je reťazec";
$doplnenie = "Toto je reťazec č. $cislo";

Je možné vytvoriť aj priradenie typu $a = $b = 10;, čo je ekvivalent  $a = ($b = 10);

Čísla

Čísla sa v PERLe môžu zapísať viacerími spôsobmi, je to znázornené v tabuľke:

Tabulka č. 590
Zápis Hodnota Komentár
4 4
3.2 3.2
.12345 0.12345
1_234_567 1234567 _ sa ignoruje
10E2 100 E – umocnenie
0×0432 1074 čislo v hexadec. sústave
0123 83 číslo v okt. sústave

Ukážka prevodov medzi decimálnym a hexadecimálnym formátom čísel:

$hex_cislo = 0x432;
print $hex_cislo; # napíše 1074

Reťazce

Zatiaľ čo C/C++ chápe reťazce ako kolekciu znakov ukadaných v poliach, PERL chápe reťazce ako celok. Každý reťazec sa musí uzavrieť buď do úvodzoviek – „Toto je reťazec“ alebo do apostrofov – ’Toto je reťazec’. PERL môže obsahovať aj prázdny reťazec – "" , a môže v ňom obsahovať aj escape-sekvencie – „Toto je reťazec \n“. Teraz si ukážeme zopár príkladov zapísania reťazcov a zobrazenia ich hodnoty:

$a = 5;

"Toto je reťazec"  ### Toto je reťazec
’Toto je reťazec’  ### Toto je reťazec
""                 ###
"$a = 10"      ### 5 = 10
’$a = 10’      ### $a = 10
"\U veľký reťazec" ### VEĽKÝ REŤAZEC
’\U veľký reťazec’ ### \U veľký reťazec

V PERLe existuje ešte zopár spôsobov, ako uvádzať reťazce pomocou operátora q, takže nasledujúce reťazce sa správajú rovnako:

Obdoba apostrofov:

  • ’Toto je reťazec’
  • q/Toto je reťazec/
  • q#Toto je reťazec#

Obdoba úvodzoviek:

  • "Toto je reťazec"
  • qq/Toto je reťazec/
  • qq^Toto je reťazec^

Pre úplnosť článku nesmie chýbať tabuľka escape sekvencií:

Tabulka č. 591
Znak Popis
\n nový riadok
\r návrat vozíka (CR)
\t tabulátor
\f formfeed
\b backspace
\a zvonček
\0nn oktálové číslo (nn sú čísla)
\xnn hexadecimálne číslo (nn sú znaky 0–9,A-F,a-f)
\cX riadiace znaky, X je ľubovoľný znak (\cC = Ctrl+C)
\u nasledujúce písmeno bude veľké
\l nasledujúce písmeno bude malé
\U všetky nasledujúce písmena budú veľké
\L všetky nasledujúce písmena budú malé
\Q neporovnávať so vzorom (len pri reg. výrazoch)
\E ukončuje sekvencie \U, \L, \Q

Záver

Na záver si ukážeme malý príklad použitia premenných:

#!/usr/bin/perl
# ozvena
print "\nČo chceš vypísať?\n";
$input = <STDIN>;
print $input;

Výstup programu:

ict ve školství 24

% ./ozvena.pl
Čo chceš vypísať?
nič
nič

<STDIN>  – manipulátor štandartného vstupu, o ňom si povieme neskôr. Používa sa pre zadávanie požadovaných hodnôt skriptu za jeho behu.

Na budúce si povieme niečo o aritmetických operátoroch a o operátoroch pre testovanie a porovnávanie hodnôt.

Odkazy

  1. CPAN – archív modulov
  2. Perl.sk – zoznam a popis funkcií PERLu
  3. Perl pre UNIX (download)
  4. Perl pre Windows (download)