Balíky Hlavní balík - main - zatím jsme s jiným nepracovali Rozdělují tzv. namespaces = množiny jmen pro proměnné $lemma = "cukr"; znamená $main::lemma = "cukr"; $Potraviny::lemma = "cukr"; # jiná proměnná use strict => nutné používat globální proměnné celým jménem
Package Celá jména se nemusí používat, když nastavíme balík: Příkaz package - nastavení implicitního balíku Platí –do konce bloku, ve kterém byl zaveden, –nebo dokud se nezavede nový. package Potraviny; $lemma = "cukr"; # znamená, $Potraviny::lemma
Moduly balíčky pro vícenásobné použití rozdělení podle tématu - logicky ucelený –proměnné –datové struktury –podprogramy šetří čas spousta předpřipravených CPAN - Comprehensive Perl Archive Network
Použití uložení v jednom souboru, který se vkládá do programu jméno souboru = jméno modulu s příponou.pm –zvyk - 1. písmeno velké vložení modulu do programu use –použití před začátkem programu, ať se zapíše kdekoli use Modul;
Hledání modulu - Seznam cest, kde Perl hledá moduly a ostatní soubory Cestu nelze přidat jednoduše push ~/MojeModuly); use Morfo; protože 1. příkaz se provádí při běhu, druhý už při kompilaci Tedy takto: use lib "~/MojeModuly"; use Morfo;
Vytvoření modulu Modul může obsahovat podprogramy –veřejné - nabízejí se k použití uživateli –soukromé - skryté před uživatelem, vlastně pomocné package Morfo; use = = qw(radka vypis); # podprogramy k dispozici # teď přijde obsah podprogramů radka, vypis a možná i dalších
sub radka # parametry: prectena radka # vystup: odkaz na strukturu slovo { my $line = chomp $line; = $line =~ m/^[^>]+>([^ ([^ (.+)/; my $slovo = {"slovo" => $info[0], "lemma" => $info[1], "tag" => $info[2]}; return $slovo; }
Moduly podle témat Pomocí dvojité dvojtečky :: Rozdělení do adresářů –Adresář MojeModuly, v něm soubor Morfo.pm obsahující modul Morfo. use lib "~/MojeModuly"; use MojeModuly::Morfo;
- pole, do kterého se ukládají identifikátory (podprogramy, proměnné), které se automaticky importují do programu, kde se používá modul (příkaz - totéž jako ale v programu musí být explicitně uvedeno, které identifikátory se mají importovat. se v tom případě ignoruje use MojeModuly::Morfo qw(radka);
Pragma speciální druh modulu ve standardní distribuci Perlu nepřidává nové konstrukce, ale ovlivňuje chování programu některé už známe: –use locale –use strict –use lib
CPAN rozdělené tematicky vyhledávání instalace - jen root dokumentace - popis použití
Příklady modulů z CPAN Env –zpřístupňuje proměnné prostředí - globální proměnné se stejným názvem, např. $HOME, $PATH. Term::ReadKey –funkce ReadKey umožňuje číst ze standardního vstupu jednotlivý znak, není třeba použít Enter. Getopt::Std –funkce getopts rozeznává volby od parametrů