in reply to Re^2: Does there exist a CPAN module for lazily initialized variables?
in thread Does there exist a CPAN module for lazily initialized variables?
sub build_lazy { my ($var, $callback, @params) = @_; eval <<__EVAL__; { my \$$var; sub $var { \\\$var = $callback->(@params) unless defined \$$var; \$$var; }; } __EVAL__ } # Later ... build_lazy( 'dbh', \&build_dbh, @dbh_params ); build_lazy( 'foo', \&build_foo );
Of course, you might want some dwimmery for hashes vs. arrays vs. scalars, unless you're ok with everything as a reference. I would be, but that's just me. And, you might want to throw BEGIN or CHECK around the calls to build_lazy(), but that's probably overkill.
------
We are the carpenters and bricklayers of the Information Age.
Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose
I shouldn't have to say this, but any code, unless otherwise stated, is untested
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Does there exist a CPAN module for lazily initialized variables?
by jryan (Vicar) on Jul 14, 2004 at 19:27 UTC |