hardburn has asked for the wisdom of the Perl Monks concerning the following question:
I have a case where I want to use a module containing a bunch of configuration information for the surrounding system. During testing, I call a special subroutine (_testing_on()) in a BEGIN block to use seperate settings (like connecting to a different database so the live one doesn't get written to).
Here's a one-liner that demonstrates the problem:
$ perl -e 'sub FOO () { 1 } BEGIN{ *FOO = sub () { 2 }; } print FOO;' Constant subroutine main::FOO redefined at -e line 1. 2
Normally, that warning is a very good idea, but in this case it just gets in the way.
How can I keep the inline-ableness of a sub NAME () { 1 } while still being able to redefine it under special circumstances without that warning? If necessary, I can live with not being inline, but it'd be really nice.
----
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: Suppressing "Constant Subroutine Redefined" Error
by chromatic (Archbishop) on Nov 21, 2003 at 19:43 UTC | |
by hardburn (Abbot) on Nov 21, 2003 at 19:49 UTC | |
|
Re: Suppressing "Constant Subroutine Redeifined" Error
by perrin (Chancellor) on Nov 21, 2003 at 19:57 UTC | |
by hardburn (Abbot) on Nov 21, 2003 at 20:36 UTC | |
|
Re: Suppressing "Constant Subroutine Redeifined" Error
by adrianh (Chancellor) on Nov 22, 2003 at 15:14 UTC |