Portál AbcLinuxu, 6. května 2025 07:23
Ahojte
Snazim sa pochopit OOP v perl. Precital som rozne tutorials a pokusam sa vytvorit jednoduchy pm modul + script ktory sa nan odvolava. Tu je priklad modulu main.pm.
##########################
package main_pack;
sub new {
my ($my_class, $w, $h) = @_;
$obj = {};
bless $obj;
$obj->{width}=$w;
$obj->{height}=$h;
return $obj;
}
sub area{
my $obj = shift;
return $obj->{width} * $obj->{height};
}
#####################
a tu sa pokusam pouzit dany modul
#####################
use main;
$test = main_pack->new(5, 5);
print "skuska.: , $test->area(), ";
#####################
lenze to skonci chybou .:main.pm did not return a true value at Untitled3 line 2. Neviem za boha co je tam zle.
Každý modul v Perlu musí mít na konci pravdivou návratovou hodnotu. Proto je potřeba do každého modulu nakonec napsat 1;
nějak takto:
package xyz; . . . 1;
dakujem ta jednotka pomohla ale nikde som to v ziadnom navode nevidel. este raz dik
We need the 1; at the end because when a module loads Perl checks to see that the module returns a true value to ensure it loaded OK. You could put any true value at the end (see Code::Police) but 1 is the convention.
Jinak doporučuji Perl od Pavla Satrapy, rok vydání je sice 2000, ale autor má talent vysvětlit věci jasně, poutavě a srozumitelně.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.