in reply to Variables versus Subroutines for a Configuration Module.
Would it be possible to change the values of the returns from the subs if the subs approach is used.
Yes, by doing some tricks with the symbol table:
use My::Config; no strict 'refs'; *'My::Config::DB_NAME' = sub { 'new_db' };
Are there any other factors that should be considered when making the choice.
Under certain conditions, subs declared with a prototype of () are considered for inlining (that's how use constant is implemented), which would make the sub method as fast as a hard-coded value. This is true as long as you don't call the sub as a class method. Example (which is tested on perl 5.8.0):
$ perl -MO=Deparse -e ' > package Foo; > sub bar () { "baz" } > package main; > print Foo::bar(), "\n"; > print Foo->bar(), "\n"; > ' -e syntax OK print 'baz', "\n"; print 'Foo'->bar, "\n";
----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer
Note: All code is untested, unless otherwise stated
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Variables versus Subroutines for a Configuration Module.
by EvdB (Deacon) on Oct 10, 2003 at 16:43 UTC | |
by Aristotle (Chancellor) on Oct 10, 2003 at 17:16 UTC |