ARCHIV |
|||||||||||||||||||||||||||
Software (10844)
Distribuce (131)
Skripty (697)
Menu
Diskuze
Informace
|
Perl (2) - Úvod do syntaxeDnes si napíšeme několik nejjednodušších programů a ukážeme si pár dalších tipů. Spouštění programuDo prvního řádku každého perlovského programu se píše řetězec #!/usr/bin/perl. To proto, aby systém věděl, čím má program spouštět. Jakmile má shell zpracovat skript, pozná z prvního řádku, pro který interpret je tento skript určen. Po znacích #! následuje právě cesta k interpretu, který má být použit ke spuštění vámi napsaného programu. Máme-li interpret jinde, tak je třeba změnit cestu za #! (ta se dá se zjistit příkazem whereis nebo env, případně i jinak - záleží na distribuci). Vhodnější bývá uvést #!/usr/bin/env perl, neboť takto je cesta k interpretu nalezena i v případě, kdy to je něco jiného než /usr/bin/perl Takto zapsaný úvodní řádek tedy nepoužívá jen Perl, ale interpretované jazyky obecně. Píšeme-li například v Pythonu, budeme do prvního řádku psát #!/usr/bin/env python apod. Je třeba podotknout, že takto napsaný první řádek program obsahovat nemusí. Jsou však důvody, proč je to vítané. Normálně bychom spouštěli program takto:
Ale, použijeme-li onen magický řádek, stačí, když napíšeme jen toto:
Ještě předtím však musíme označit soubor jako spustitelný:
Uživatele tak nemusí zajímat, v jakém jazyce je program napsaný. To je hlavní výhodou. Důležité je to i proto, že když program s #!/usr/bin/env perl nahrajeme do adresáře /usr/bin (resp. libovolného adresáře z proměnné prostředí PATH) a potom z kteréhokoliv místa zadáme následující příkaz, náš program se spustí.
Příklad na úvodNyní jsme připraveni na první příklad. Vytvořme nový soubor s názvem program.pl a v textovém editoru a do něj uložme tento kód:
Už ze zápisu je celkem zřejmé, co bude program dělat. Jak jsme se v minulém dílu dozvěděli, je program posloupnost nějakých nařízení počítači. Přesně tak to platí i zde. Řádek print "Náš 1. program v Perlu!\n"; přeložený do naší řeči, znamená Vytiskni na výstup text Náš 1. program v Perlu! a nový řádek. print je příkaz, kterým dáváme počítači na vědomí, že chceme vypsat text, který napíšeme za print do uvozovek. Středník dává interpretu na vědomí, že zde příkaz končí a začíná nový. Středník musí být mezi každými dvěma příkazy. Výstup našeho prvního programu bude vypadat takto:
Speciální znakyNení to zatím nic jiného, než výpis textu. Zarazit může asi jediná věc - co znamená ta dvojice znaků \n. Je to označení ukončení řádku. Kdybychom tuto sekvenci znaků vynechali, dostali bychom opticky nepříliš hezký výstup:
\n je jednou z tzv. escape sekvencí. Escape sekvence (v tabulce je jejich částečný výčet) jednoduše řečeno nahrazují znaky, které nemůžeme v Perlu za daných okolností napsat (z různých důvodů: například mají nějaký jiný význam nebo pro ně nemáme symbol na klávesnici).
Proč je například takový znak pro nový řádek potřeba? Pokud ve zdrojovém kódu místo escape sekvenece \n jen odentrujeme, neuspějeme. Perl se k znaku nového řádku chovátak, že by ho interpretoval jako mezeru. Poznamenejme, že Perl mimo data nedělá rozdíly mezi bílými znaky (mezera, tabulátor, znak nového řádku). Jakkoliv rozsáhlý program bychom v Perlu teoreticky mohli napsat na jediný řádek. Stačilo by konce řádků nahradit mezerami. Zkusme si zaexperimentovat a v našem příkladu si do uvozovek za print přidejme nějakou další escape sekvenci - například \a a sledujme (v tomto případě poslouchejme - tedy pokud nemáme nastaven vizuální zvonek), co se stane. Přípona perlovského programuProgramům dáváme vždy příponu .pl. Není povinná (systém typ programu stejně vždy určuje podle řádku #!/cesta/k/interpretu), ale pro přehlednost je dobrým zvykem ji používat. Později budeme používat také příponu .pm pro moduly. Pro programy v Perlu 6 se používá například .pl6, .p6, .pm6 atd. KomentářeKomentáře jsou úseky programu, které interpret ignoruje. Na výsledný program nemají žádný efekt. K čemu jsou tedy dobré? Zvyšují přehlednost zdrojového kódu a jsou velmi užitečné v případě, kdy chceme kód po delší době editovat. Obzvlášť, jedná-li se o složitější program. Uvozují se křížkem - od něj do konce řádku interpret vše ignoruje. Uveďme příklad:
Jak používat komentáře? Měli by usnadňovat pochopení programu při čtení jeho zdrojového kódu. Nesprávně napsaný komentář je na obtíž (Typickou ukázkou nevhodných komentářů je výše uvedený program - zatím však nemáme znalosti pro program, kde by komentáře byly potřeba. Dostaneme se k tomu.) Další možností, jak použít komentář je informace o názvu, verzi, autorovi a činnosti popř. něčeho dalšího na začátku rozsáhlejšího programu. Komentáře píšeme pro to, aby usnadňovaly pochopení. Je třeba psát proč je ta a ta část programu napsaná takto a ne jinak, jaký význam zde má tato proměnná, co tu bude potřeba dodělat nebo něco, co zkrátka bude při pozdějším čtení kódu k užitku. Komentář typu #vypisuje text Ahoj za příkazem print "Ahoj"; nám asi moc nepomůže. Ovšem setkat se s ním lze poměrně často, zejména v případech, kdy autor zkrátka komentář napsat chce. Nejlépší metoda, která člověka naučí psát komentáře, je vlastního čtení. Perl nepodporuje víceřádkové komentáře. Existuje sice speciální syntaxe, která by k tomu teoreticky mohla sloužit, ale není vhodné ji používat, protože je určena k jiným účelům. Řetězec =komentar označuje začátek takového bloku a jeho konec označíme =cut.
Související články
Předchozí Celou kategorii (seriál) Další
Perl (1) - Dávka teorie na úvod
Perl (3) - Proměnné Perl (4) - Čísla a řetězce Perl (5) - Podmínky Perl (6) - Pravdivostní výrazy Perl (7) - Vstup poprvé Perl (8) - Některé základní vestavěné funkce Perl (9) - Cykly Perl (10) - Další řídící struktury Perl (11) - Pole - úvod Perl (12) - Pole - základní operace Perl (13) - Hashe Perl (14) - Další nástroje pro seznamy Perl (15) - Výchozí proměnná, heredoc, symbolické odkazy Perl (16) - Regulární výrazy - začínáme Perl (17) - Regulární výrazy - kotvy Perl (18) - Regulární výrazy - množiny znaků Perl (19) - Regulární výrazy - opakování a kvantifikátory Perl (20) - Regulární výrazy - magické závorky Perl (21) - Regulární výrazy - nahrazování Perl (22) - Regulární výrazy - přepínače Perl (23) - Regulární výrazy - rozšířené vzory Perl (24) - Regulární výrazy - příklady Perl (25) - Regulární výrazy - závěr Perl (26) - Podprogramy Perl (27) - Prototypy Perl (28) - Rozsahy platnosti proměnných Perl (29) - Úvod k práci se soubory Perl (30) - Práce se soubory Perl (31) - Testování souborů Perl (32) - Jiné typy souborů Perl (33) - Formátování výstupu - printf Perl (34) - Formátování výstupu - formáty Perl (35) - Vestavěný debugger Perl (36) - Grafické debuggery Perl (37) - Začínáme s moduly Perl (38) - Rozhraní modulu Perl (39) - Pragma Perl (40) - Dodatky k modulům Perl (41) - CPAN Perl (42) - Argumenty příkazového řádku Perl (43) - Přepínače Perl (44) - Dlouhé přepínače Perl (45) - Odkazy Perl (46) - Užití odkazů a anonymní data Perl (47) - Složitější datové struktury Perl (48) - Libovolně složité datové struktury Perl (49) - Tabulky symbolů a typegloby Perl (50) - Uzávěry a iterátory Perl (51) - Signály Perl (52) - Externí příkazy Perl (53) - Režim nakažení Perl (54) - Fork Perl (55) - Eval Perl (56) - Volby příkazu perl Perl (57) - Jednořádkové skripty Perl (58) - OOP - úvod Perl (59) - OOP - typické použití Perl (60) - OOP - dědičnost Perl (61) - OOP - přínos a užití dědičnosti Perl (62) - OOP - přetěžování Perl (63) - OOP - závěr Perl (64) - Projekt - čtečka sportovních výsledků Perl (65) - Projekt - získání dat Perl (66) - Projekt - výběr zápasů a podrobnosti Perl (67) - Projekt - dokončujeme modul Perl (68) - Projekt - zobrazení zápasů Perl (69) - Projekt - online přenos Perl (70) - Plain Old Documentation Perl (71) - Navazování proměnných Perl (72) - Navazování složitějších datových typů Perl (73) - DBM Perl (74) - Sockety Perl (75) - Obsluha více klientů Perl (76) - Síťová hra v kostky Perl (77) - Služby internetu Perl (78) - Databáze - úvod Perl (79) - Databáze - manipulace s daty Perl (80) - Databáze - závěrečné poznámky Perl (81) - CGI - příprava webového serveru Perl (82) - CGI - první skripty Perl (83) - CGI - získávání dat od uživatele Perl (84) - CGI - usnadnění tvorby skriptů pomocí modulu CGI Perl (85) - CGI - generování dokumentu modulem CGI Perl (86) - CGI - cookies Perl (87) - CGI - příklad aplikace Perl (88) - CGI - závěr Perl (89) - Mason - snadné psaní webů Perl (90) - Mason - speciální bloky Perl (91) - Mason - handlery Perl (92) - Mason - závěr Perl (93) - Catalyst - MVC framework pro Perl Perl (94) - Catalyst - základy pro psaní aplikace Perl (95) - Catalyst - šablony Perl (96) - Catalyst - spolupráce s databází Perl (97) - Curses - tvorba textových uživatelských rozhraní Perl (98) - Curses - pozicování a okna Perl (99) - Curses - měření rychlosti psaní Perl (100) - Curses - použití hotových widgetů Perl (101) - Curses - jednoduchý textový editor Perl (102) - Rozšiřování Perlu pomocí XS Perl (103) - Rozšiřování Perlu pomocí SWIG Perl (104) - Testování rychlosti Perl (105) - Testování programových jednotek Perl (106) - Debugování pomocí komentářů Perl (107) - Moose - moderní objektový systém Perl (108) - Moose - základní vlastnosti Perl (109) - Moose - role Perl (110) - Moose - meta API Perl (111) - Pokročilá práce se seznamy Perl (112) - Práce s PDF Perl (113) - Práce s archivy Perl (114) - Tk - úvod Perl (115) - Tk - umísťování widgetů Perl (116) - Tk - základní widgety Perl (117) - Tk - některé pokročilejší widgety Perl (118) - Tk - čas a události Perl (119) - Tk - CD man Perl (120) - Wx - základní práce s widgety Perl (121) - Wx - události Perl (122) - Gtk2 - úvod Perl (123) - Gtk2 - základní práce s obrázky Perl (124) - Gtk2 - události a čas Perl (125) - Gtk2 - vlastní widgety Perl (126) - Gtk2 - textové okno a práce s pozicemi Perl (127) - Gtk2 - hierarchické seznamy Perl (128) - Gtk2 - dialogy Perl (129) - Gtk2 - skládání widgetů Perl (130) - Gtk2 - menu a toolbary Perl (131) - Gtk2 - transparentní okna, tray ikona, výběr souborů Perl (132) - Gtk2 - drag&drop, druid Perl (133) - Gtk2 - úpravy vzhledu aplikací pomocí rc Perl (134) - Gtk2 - Glade Interface Designer Perl (135) - XML - čtení a zápis Perl (136) - XML - DOM a SAX přístupy Perl (137) - Vlákna Perl (138) - Memoizace - cachování podprogramů Perl (139) - Profilling - efektivní odhalování pomalých míst v programu Perl (140) - Profilling - píšeme si vlastní profiler / debugger Perl (141) - Formátování kódu, deparsování, perltidy Perl (142) - Způsoby konfigurování Perl (143) - Struktura datových typů, správa paměti Perl (144) - POE - událostmi řízené programování Perl (145) - POE - aplikace typu klient-server Perl (146) - Perl 6 - jazyk budoucnosti Perl (147) - Perl 6 - regulární výrazy, nové operátory Perl (148) - Perl Culture Perl (149) - Závěr Pozvánka na Český Perl Workshop Perl 5.22.0 a vše okolo Perl 5.24.0 a vše okolo Předchozí Celou kategorii (seriál) Další
|
Vyhledávání software
Vyhledávání článků
28.11.2018 23:56 /František Kučera 12.11.2018 21:28 /Redakce Linuxsoft.cz 6.11.2018 2:04 /František Kučera 4.10.2018 21:30 /Ondřej Čečák 18.9.2018 23:30 /František Kučera 9.9.2018 14:15 /Redakce Linuxsoft.cz 12.8.2018 16:58 /František Kučera 16.7.2018 1:05 /František Kučera
Poslední diskuze
31.7.2023 14:13 /
Linda Graham 30.11.2022 9:32 /
Kyle McDermott 13.12.2018 10:57 /
Jan Mareš 2.12.2018 23:56 /
František Kučera 5.10.2018 17:12 /
Jakub Kuljovsky | |||||||||||||||||||||||||
ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze |