Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

PERL od A po Z

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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:

Valentýna vyřešíte v našem butiku

Pánové, Valentýn je tu a tak jsme pro vás v našem butiku připravili balíček dámských kalhotek a trička za zvýhodněnou cenu 365 Kč.

       
% ./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)

Školení: TCP/IP na Linuxu I.

V tomto kurzu se seznámíte se síťováním v Linuxu na všech vrstvách. Ujasníte si možnosti použití Linuxu v roli klienta, serveru i routeru.

  • Počítačové sítě
  • Architektura TCP/IP
  • Ethernet
  • Protokol PPP
  • Protokoly IPv4 a IPv6
  • IP na ethernetu
  • IP routing
  • Chybové a řídící zprávy
  • Transportní protokoly
  • Překlady jmen a adres
  • Aplikace
  • Překlady síťových adres a proxying
  • Testování sítě
  • Aktuální situace na poli TCP/IP

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 2,51

Přehled názorů

OhMyGod
TomCat 21. 7. 2004 00:56
Nový
└ 
bez titulku
TomCat 21. 7. 2004 01:21
Nový
 
├ 
Re:
brano 21. 7. 2004 01:54
Nový
 
├ 
Souhlas
Jakub Trávník aka jtra 21. 7. 2004 07:57
Nový
 
│
├ 
Re: Souhlas
Johanka 21. 7. 2004 08:39
Nový
 
│
│
└ 
Re: Souhlas
Igor Lengvarsky 21. 7. 2004 10:12
Nový
 
│
└ 
Re: Souhlas
Martin 21. 7. 2004 15:06
Nový
 
├ 
Re:
Igor Lengvarsky 21. 7. 2004 10:10
Nový
 
│
└ 
Re:
Jakub Hegenbart 21. 7. 2004 10:17
Nový
 
│
 
└ 
Re:
Igor Lengvarsky 21. 7. 2004 10:36
Nový
 
│
 
 
└ 
Re:
... 22. 7. 2004 03:18
Nový
 
│
 
 
 
└ 
Re:
... 22. 7. 2004 03:21
Nový
 
└ 
Re: #!
Branislav Zahradnik 21. 7. 2004 11:58
Nový
 
 
├ 
Re: #!
Igor Lengvarsky 21. 7. 2004 12:36
Nový
 
 
│
└ 
Re: #!
barney 22. 7. 2004 07:45
Nový
 
 
└ 
Re: #!
janom 22. 7. 2004 13:05
Nový
 
 
 
├ 
Re: #!
gopi 22. 7. 2004 13:13
Nový
 
 
 
└ 
Re: #!
hkmaly 22. 7. 2004 19:40
Nový
 
 
 
 
└ 
Re: #!
anonymní uživatel 23. 7. 2004 11:23
Nový
$a = $b = 10;
SysOp 21. 7. 2004 07:48
Nový
├ 
Re: $a = $b = 10;
Igor Lengvarsky 21. 7. 2004 10:01
Nový
├ 
Re: $a = $b = 10;
looser 21. 7. 2004 10:32
Nový
│
└ 
Re: $a = $b = 10;
Igor Lengvarsky 21. 7. 2004 11:05
Nový
│
 
├ 
Re: $a = $b = 10;
oozy 21. 7. 2004 12:13
Nový
│
 
└ 
Re: $a = $b = 10;
Imro Konkol 23. 7. 2004 22:02
Nový
└ 
Re: $a = $b = 10;
Viliam Holub 21. 7. 2004 14:25
Nový
Dokolecka... dokola
mr.builder 21. 7. 2004 07:48
Nový
bez titulku
lubo 21. 7. 2004 07:59
Nový
└ 
Re:
Johanka 21. 7. 2004 08:29
Nový
 
├ 
Re:
markon 21. 7. 2004 08:57
Nový
 
├ 
Re:
jacek 21. 7. 2004 08:57
Nový
 
│
└ 
Re:
Badza 21. 7. 2004 15:27
Nový
 
├ 
Re:
tony 21. 7. 2004 09:07
Nový
 
└ 
Re:
barney 22. 7. 2004 07:40
Nový
drsneee
oozy 21. 7. 2004 07:59
Nový
co zas remcate???
Teddy 21. 7. 2004 09:14
Nový
├ 
Re: co zas remcate???
Saha 21. 7. 2004 09:35
Nový
│
└ 
Re: co zas remcate???
Ann 21. 7. 2004 09:40
Nový
│
 
└ 
Re: co zas remcate???
barney 22. 7. 2004 07:52
Nový
│
 
 
└ 
Re: co zas remcate???
Igor Lengvarsky 22. 7. 2004 08:16
Nový
├ 
Re: co zas remcate???
Yeti 21. 7. 2004 09:39
Nový
├ 
Re: co zas remcate???
brano 21. 7. 2004 09:53
Nový
└ 
Re: co zas remcate???
Corwin 21. 7. 2004 18:08
Nový
probuzeni
jouda 21. 7. 2004 10:14
Nový
└ 
Re: probuzeni
looser 21. 7. 2004 10:40
Nový
 
└ 
Re: probuzeni
Jakub Hegenbart 21. 7. 2004 10:44
Nový
 
 
├ 
Re: probuzeni
looser 22. 7. 2004 09:18
Nový
 
 
│
└ 
Re: probuzeni
Jakub Hegenbart 22. 7. 2004 14:40
Nový
 
 
└ 
Re: probuzeni
looser 22. 7. 2004 09:22
Nový
PERL - www.devnet.sk
Scrool 21. 7. 2004 10:48
Nový
└ 
Re: PERL - www.devnet.sk
sara 21. 7. 2004 11:07
Nový
 
└ 
Re: PERL - www.devnet.sk
Tomáš 21. 7. 2004 13:07
Nový
bez titulku
Igor Lengvarsky 21. 7. 2004 10:56
Nový
├ 
Re: PERLy?
Robert Drotar 21. 7. 2004 11:20
Nový
│
└ 
Re: PERLy?
Ondra 21. 7. 2004 12:20
Nový
│
 
├ 
Re: PERLy?
oozy 21. 7. 2004 12:37
Nový
│
 
│
└ 
Re: PERLy?
guma 22. 7. 2004 08:54
Nový
│
 
├ 
Re: PERLy?
anonymní uživatel 21. 7. 2004 12:38
Nový
│
 
└ 
Re: PERLy?
yacht 21. 7. 2004 13:31
Nový
├ 
Re:
bernos 21. 7. 2004 12:44
Nový
│
└ 
Re:
Johanka 21. 7. 2004 13:06
Nový
│
 
├ 
Re:
Twain 21. 7. 2004 14:38
Nový
│
 
├ 
Re:
mrk 21. 7. 2004 17:50
Nový
│
 
│
└ 
Re:
... 22. 7. 2004 03:12
Nový
│
 
├ 
Re:
brano 21. 7. 2004 18:20
Nový
│
 
│
└ 
Re:
Igor Lengvarsky 21. 7. 2004 19:04
Nový
│
 
└ 
Re:
gopi 22. 7. 2004 00:07
Nový
│
 
 
├ 
Re:
hu 22. 7. 2004 09:09
Nový
│
 
 
└ 
Re:
Johanka 22. 7. 2004 23:05
Nový
│
 
 
 
├ 
Re:
TimeLord 28. 7. 2004 14:16
Nový
│
 
 
 
│
└ 
Re:
dalda 19. 8. 2004 13:05
Nový
│
 
 
 
└ 
Re:
dejf 4. 8. 2004 08:17
Nový
├ 
Re:
lyon 21. 7. 2004 14:32
Nový
│
└ 
Re:
Yeti 21. 7. 2004 18:03
Nový
│
 
└ 
Re:
lyon 22. 7. 2004 00:21
Nový
│
 
 
└ 
Re:
MaT 22. 7. 2004 02:54
Nový
│
 
 
 
└ 
Re:
lyon 22. 7. 2004 18:30
Nový
│
 
 
 
 
└ 
Re:
Honza 22. 7. 2004 20:38
Nový
│
 
 
 
 
 
└ 
Re:
Petr Jakubec 29. 7. 2004 07:39
Nový
│
 
 
 
 
 
 
└ 
Re:
Jakub Moc 29. 7. 2004 17:40
Nový
└ 
Re:
ldx 6. 8. 2004 09:27
Nový
clanok
CyberBoB 21. 7. 2004 12:45
Nový
at pokracuje
Cejka 21. 7. 2004 13:00
Nový
jde o vice nez o clanek
supermikro 21. 7. 2004 13:18
Nový
├ 
Re: jde o vice nez o clanek
lyon 21. 7. 2004 14:41
Nový
├ 
Re: jde o vice nez o clanek
Johanka 21. 7. 2004 15:07
Nový
│
└ 
Re: jde o vice nez o clanek
looser 22. 7. 2004 10:02
Nový
├ 
zcela offtopic
fpul 21. 7. 2004 15:13
Nový
│
└ 
Re: zcela offtopic
Anicka 21. 7. 2004 15:28
Nový
└ 
Re: jde o vice nez o clanek;
Pavel Stěhule 21. 7. 2004 16:27
Nový
 
├ 
Re: jde o vice nez o clanek;
supermikro 21. 7. 2004 19:33
Nový
 
│
├ 
Re: jde o vice nez o clanek;
TomCat 21. 7. 2004 20:32
Nový
 
│
│
├ 
Re: jde o vice nez o clanek;
Pavel 21. 7. 2004 22:08
Nový
 
│
│
└ 
Re: jde o vice nez o clanek;
neologism 21. 7. 2004 22:39
Nový
 
│
│
 
└ 
Re: jde o vice nez o clanek;
guma 22. 7. 2004 09:15
Nový
 
│
│
 
 
└ 
Re: jde o vice nez o clanek;
guma 22. 7. 2004 09:16
Nový
 
│
└ 
Re: jde o vice nez o clanek;
Pavel 21. 7. 2004 21:48
Nový
 
│
 
└ 
Re: jde o vice nez o clanek;
supermikro 22. 7. 2004 11:52
Nový
 
└ 
Re: jde o vice nez o clanek;
Mormegil 22. 7. 2004 12:14
Nový
Serial na root.cz nebude
Igor Lengvarsky 21. 7. 2004 16:38
Nový
└ 
Re: Serial na root.cz nebude
Scrool 21. 7. 2004 23:21
Nový
 
└ 
Re: Serial na root.cz nebude
Igor Lengvarsky 22. 7. 2004 00:04
Nový
 
 
├ 
Re: Serial na root.cz nebude
ldx 6. 8. 2004 09:52
Nový
 
 
└ 
Re: Serial na root.cz nebude
ldx 6. 8. 2004 10:20
Nový
A sakra...
TomCat 21. 7. 2004 19:09
Nový
└ 
Re: A sakra...
Pavel Satrapa 30. 7. 2004 09:18
Nový
 
└ 
Re: A sakra...
Milan Sorm 1. 8. 2004 18:51
Nový
!!!!!!!!!!!!
... 22. 7. 2004 09:12
Nový
Utilitka pro zdejsi diskuse; vicemene spam :)
dave 22. 7. 2004 10:39
Nový
├ 
Re: Utilitka pro zdejsi diskuse; vicemene spam :)
... 22. 7. 2004 11:12
Nový
│
└ 
Re: Utilitka pro zdejsi diskuse; vicemene spam :)
Michal 22. 7. 2004 11:58
Nový
│
 
└ 
Re: Utilitka pro zdejsi diskuse; vicemene spam :)
gopi 22. 7. 2004 13:51
Nový
├ 
Re: Utilitka pro zdejsi diskuse; vicemene spam :)
... 22. 7. 2004 11:16
Nový
└ 
diskuzní fórum
Mikuláš Patočka 22. 7. 2004 17:03
Nový
STDIN
jam 22. 7. 2004 13:26
Nový
bez titulku
... 22. 7. 2004 18:12
Nový
├ 
Re:
gopi 22. 7. 2004 18:43
Nový
│
├ 
Re:
nemo 22. 7. 2004 23:54
Nový
│
│
└ 
Re:
markon 23. 7. 2004 16:47
Nový
│
│
 
├ 
Re:
Twain 24. 7. 2004 12:58
Nový
│
│
 
└ 
Re:
Pavel Satrapa 31. 7. 2004 22:20
Nový
│
└ 
Re: záložky
Hloupý Honza 23. 7. 2004 13:08
Nový
│
 
├ 
Re: záložky
gopi 23. 7. 2004 14:54
Nový
│
 
└ 
Re: záložky
oozy 23. 7. 2004 15:11
Nový
│
 
 
└ 
Re: záložky
Hloupý Honza 23. 7. 2004 22:23
Nový
└ 
Re:
test 23. 7. 2004 17:40
Nový
 
├ 
Re:
tset 24. 7. 2004 15:08
Nový
 
└ 
Re:test
test 25. 7. 2004 14:49
Nový
Umocňuje??? Ha ha!
Karel Macek 30. 7. 2004 16:05
Nový
Ježíšmarja, lidi, nebuďte tak přísní
Vladimír Stwora 31. 7. 2004 00:03
Nový
Ďalší diel seriálu
Igor Lengvarský 31. 7. 2004 23:43
Nový
└ 
Re: Ďalší diel seriálu
DT 2. 8. 2004 15:51
Nový
Vim ze to sem nepatri, ale potrebuju nutne pomoc..
Baky 4. 8. 2004 09:30
Nový
ste trapny
miso 10. 8. 2004 06:21
Nový
└ 
Re: ste trapny
Igor Lengvarský 11. 8. 2004 20:11
Nový
pozdrav
Janula 27. 7. 2006 10:51
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem