Lowry76 has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks,
I have a problem with code references. I have a hash with code references as values. Unfortunately, as soon as the script is called those functions are executed instead of just referenced. Here's an example
my $subs = {a=>\&_a}; sub _a{ my $attr = shift; my $obj = SOME::PACKAGE->new($attr); }
The variable $attr is used in SOME::PACKAGE to do a database request. As soon as the script is initialized now it throws an error that $attr in SOME::PACKAGE is undef. This is obvious because I didn't call the function yet (well, apparently I did but didn't want to). Any suggestions how to reference a function like that without calling it when the script is initialized?
Cheers,
Lowry
## Problem solved ###
The lesson for today: know your perl! Problem was in fact that one of the subs of class SOME::PACKAGE was called when initialized. Which of the subs you're asking? The sub "import"! And yes, I wrote SOME::PACKAGE, and no, I didn't know import()
Renaming import() to _import() fixed it.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Code reference ( \¬ThisCall() )
by Anonymous Monk on Aug 26, 2014 at 07:20 UTC | |
by Lowry76 (Novice) on Aug 26, 2014 at 07:24 UTC | |
by davido (Cardinal) on Aug 26, 2014 at 14:43 UTC | |
by Anonymous Monk on Aug 26, 2014 at 07:25 UTC | |
by Anonymous Monk on Aug 26, 2014 at 07:26 UTC | |
by AnomalousMonk (Archbishop) on Aug 26, 2014 at 15:33 UTC | |
|
Re: Code reference
by NetWallah (Canon) on Aug 26, 2014 at 17:34 UTC |