1 / 14

Balíky

Balíky. Hlavní balík - main - zatím jsme s jiným nepracovali Rozdělují tzv. namespaces = množiny jmen pro proměnné Vlastní jméno se píše za dvojici dvojteček :: $lemma = "cukr"; znamená (znamenalo dosud) $main::lemma = "cukr"; $Potraviny::lemma = "cukr"; # jiná proměnná

vivien
Download Presentation

Balíky

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Balíky • Hlavní balík - main - zatím jsme s jiným nepracovali • Rozdělují tzv. namespaces = množiny jmen pro proměnné • Vlastní jméno se píše za dvojici dvojteček :: • $lemma = "cukr"; znamená (znamenalo dosud) • $main::lemma = "cukr"; • $Potraviny::lemma = "cukr"; # jiná proměnná • použijeme-li v programu use strict => nutné používat globální proměnné celým jménem

  2. 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, • dokud se nezavede nový implicitní package $lemma = “mouka"; # týká se proměnné $main::lemma package Potraviny; $lemma = "cukr"; # týká se proměnné $Potraviny::lemma

  3. Moduly • balíčky pro vícenásobné použití • rozdělení podle tématu - logicky • proměnné • datové struktury • podprogramy • šetří čas • spousta předpřipravených (není třeba programovat něco, co už někdo udělal): • CPAN - Comprehensive Perl Archive Network

  4. Použití modulu • 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 pomocí příkazu • do • require • use • použití před začátkem programu, ať se zapíše kdekoli Nepoužívají se často use Modul;

  5. Příkladmodulu # priklad jednoduchého modulu Ahoj.pm $pozdrav = “Ahoj“; 1; #!/usr/bin/perl # využití modulu use Ahoj;# modul se načte do programu print “$pozdrav, Pepo!\n“;

  6. Jak vypadá modul • nastavení balíku stejného jména jako modul (package) • definice rozhraní pomocí modulu Exporter • které prvky jsou určeny k použití v programech • implementace uvnitř modulu se může změnit, ale rozhraní by mělo zůstat stejné • např. algoritmus nějakého výpočtu, • konkrétní implementace struktur, ... • vlastní tělo modulu • zakončení modulu – příkazem 1; • označuje úspěšné zakončení vložení

  7. Vytvoření modulu • Modul může obsahovat podprogramy (k tomu hlavně moduly jsou) • veřejné - nabízejí se k použití uživateli • soukromé - skryté před uživatelem, vlastně pomocné package Orwell;# nastaveni baliku use Exporter; # definice rozhrani @ISA = qw(Exporter); @EXPORT = qw(&radka &vypis); # k dispozici sub radka {...} sub vypis {...} sub vypocet {...}

  8. Vytvoření modulu a jeho použití package Orwell;# nastaveni baliku use Exporter; # definice rozhrani @ISA = qw(Exporter); @EXPORT = qw(&radka &vypis); # k dispozici sub radka {...} sub vypis {...} sub vypocet {...} use Orwell; my $line = radka(); # totéž jako Orwell::radka() ... vypis();

  9. Hledání modulu - pole @INC • Seznam cest, kde Perl hledá moduly a ostatní soubory • Cestu nelze přidat jednoduše push (@INC, ~/MojeModuly); use Orwell; • protože 1. příkaz se provádí při běhu, druhý už při kompilaci • Příkaz use lib • Tedy např. takto: use lib "~/MojeModuly"; use Orwell;

  10. Moduly podle témat • Pomocí dvojité dvojtečky :: • Rozdělení do adresářů • Adresář MojeModuly, v něm • podadresář Lingv, v něm • soubor Orwell.pm obsahující modul Orwell. use lib "~/MojeModuly"; use Lingv::Orwell;

  11. 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 • Další užitečné: • use constant • use integer use constant PI => 3.1415; $obvod = PI * 2 * $r;

  12. CPAN http://search.cpan.org/ • rozdělené tematicky • vyhledávání • instalace - jen root • dokumentace - popis použití

  13. 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ů (viz příklad na následující stránce)

  14. #!/usr/bin/perl # pouzitimodulugetoptnapriklad z minula use Getopt::Std; our($opt_n,$opt_i,$opt_o); getopts("ni:o:"); #my $num = 0; my $input = $opt_i; my $output = $opt_o; #if(defined ($input) and $input eq "-n") {$num=1; $input = shift;} #my $output = shift; if(defined($input)){ open(INPUT,$input) ordie "Nemuzuotevrit soubor $input: $!\n?";} else {*INPUT = *STDIN;} if(defined($output)){ open(OUTPUT,">$output") ordie "Nemuzuotevrit soubor $output:} $!\n";} else {*OUTPUT = *STDOUT;} my @file = <INPUT>; #if($num) {@file = sort {$a <=> $b} @file;} if($opt_n) {@file = sort {$a <=> $b} @file;} else{@file = sort @file;} print OUTPUT @file;

More Related