|
|||||||||||||||||||||||||||
Anders Bruun Olsen <sslug@sslug> writes:
> Jeg synes bare at den ofte (med -w) brokker sig over uninitialized variable
> eller lign. hvis jeg ikke definerer den med 'my' ..
Defor skal du også netop definere den uden for funktionen. Hvis du
ønsker en global variabel er det æstetisk set også pænest at erklære
den på højeste nivo.
Hvis det du egentligt ønsker er en variabel der er global, men kun
tilgængelig fra funktionen, så er du ved at genopfinde objekter, og så
er det nok en god ide at læse perltoot(1) eller perlboot(1).
En anden mulighed ville dog være at anvende en closure:
sub gen_foo {
my $private_global = 42;
return sub { return $private_global++; }
}
$foo = gen_foo;
print &$foo, "\n";
print &$foo, "\n";
print &$foo, "\n";
print &$foo, "\n";
Du kan ikke tilgå $private_global på andre måder end gennem
&$foo. Enhver anden måde at referere til den er effektivt smidt
væk. For de fleste perl-programmører vil ovenstående nok være en smule
sort. De fleste vil nok lave et objekt til at udføre ovenstående.
--
Linux lovers hate Windows, BSD lovers like UNIX
-- Set på OSNews.com
|
||||||||||||||
|
||||||||||||||