Undefined subroutine &main::subroutine
Lukas Svoboda
xsvobod4 na fi.muni.cz
Neděle Březen 7 14:48:49 MET 2004
On Sun, Mar 07, 2004 at 02:34:04PM +0100, Vladimír Fux wrote:
> Dobry den vsem.
>
> Poradte mi prosim, kde delam chybu. Program, ktery uz mi fungoval mi
> najednou zacal vypadavat s hlaskou
> Undefined subroutine &main::time2iso , prestoze na zacatku programu mam
> prikaz
> use HTTP::FDate;
> Badanim jsem zjistil, ze jakykoliv program, ktery napisu mi nenajde zadnou
> funkci v knihovne, pripojene prikazem "use nejakaknihovna;"
>
> Priklad
>
> -------- mylib.pm --------
> package mylib;
> sub pricti_pet ($)
> {
> my $cislo = shift;
> return $cislo + 5;
> }
> 1;
>
> ------- test.pl -------
> #!/usr/bin/perl
> use mylib;
> $pricteno = pricti_pet(2);
> print "Vysledek: $pricteno \n";
> exit;
>
> Pri spusteni ohlasi
> Undefined subroutine &main::prictipet called at ./pokus line 4.
>
Knihovnu FDate neznam, ale ten priklad je jasny.
Pokud pouzitjete package XYZ pak se dale vsechny definovane fce a prom.
nachazi v jmennem prostoru XYZ. Tedy k nim (z jinych jmen. prostoru)
pristupujete XYZ::MOJE_FCE. Ve vami napsanem prikladu lezi hlavni kod v
jmen. prostoru 'main', takze musite volat:
my $pricteno = mylib::pricti_pet(2);
(doporucuji vsude kde to jen jde deklarovat promenne pomoci 'my' perl
je rychlejsi a program lepe citelny).
Lukas Svoboda
Další informace o konferenci Perl