Napište modul Matematika, který bude definovat funkce soucet a
obsah_kruhu. Funkce soucet sečte všechny argumenty a vrátí
tuto hodnotu. Funkce obsah_kruhu očekává jako svůj argument buď
poloměr nebo průměr kruhu a vrátí obsah kruhu s tímto parametrem.
Dále jsou zde definovány konstanty PI (vrací Ludolfovo číslo) a
E (obsahuje Eulerovo číslo).
Definujte rozhraní modulu tak, že implicitně se exportuje pouze konstanta
PI. Na požádání je možné provést import libovolného jména nebo
hromadně jména všech funkcí nebo všech konstant.
Před začátkem zavádění modulu vypište "Matematika, verze <VERZE
MODULU>". Po ukončení programu vypište "Konec použití modulu
Matematika". Obě věty se samozřejmě vypíší pouze v případě, že jsme
modul použili.
Modul Matematika uložte do adresáře lib ve vašem domovském
adresáři.
Napište skript, který modul Matematika použije. Zkoušejte různé možnosti
importu jmen a samozřejmě funkčnost vašich funkcí. Vyzkoušejte i použití
modulu s požadouvanou verzí vyšší, než skutečně existuje.
package Matematika;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(PI);
our %EXPORT_TAGS = (funkce => [qw(soucet obsah_kruhu)],
konstanty => [qw(PI E)]);
Matematika->export_ok_tags('konstanty');
Matematika->export_ok_tags('funkce');
BEGIN {
our $VERSION = '1.0';
print "Matematika, verze $VERSION\n";
}
END {
print "Konec použití modulu Matematika.\n";
}
sub PI () { 3.1415926535897932384626433832795 };
sub E () { 2.718282 };
sub soucet {
my $soucet = 0;
$soucet += $_ for @_;
return $soucet;
# nebo treba
# return eval join '+', @_;
}
sub obsah_kruhu {
# moznost predat
# -polomer => <polomer>
# -prumer => <prumer>
my %argumenty = @_;
die "Nezadany potrebne argumenty (prumer nebo polomer) ve funkci obsah_kruhu\n"
unless $argumenty{-polomer} or $argumenty{-prumer};
# prednostne pocitame podle polomeru
my $polomer = $argumenty{-polomer} || $argumenty{-prumer} / 2;
return PI * $polomer**2;
}
# uspesne zavedeni modulu
1;