Dude. constants should not be redefined at all. Sounds like what you
need is just normal variables with default settings instead.
Zarabozo, Francisco (GE, Corporate) wrote:
> Hello All,
>
> I'm having some trouble with a module where I need to implement a change.
> Basically, this module defines constants that other modules will use at a
> later time.
>
> I need to detect parameters in the import() sub (that's the requested
> change) and, if the case, redefine some of those constants.
>
> I'm trying with evals but all I'm getting is a warning about "constant
> redefined", AND the constant is not really changing (it keeps its previous
> value).
>
> Is there a way to correctly redefine a constant at import() time?
>
> Here is a simple example of the scene:
>
> Script.pl
> -----------------
> use strict;
> use warnings;
> use myModule constantA => 'foo';
> -----------------
>
> myModule.pm
> -----------------
> package myModule;
> use strict;
> use warnings;
> use constant constantA => 'bar';
>
> sub import {
> my %params = @_;
> if ($params{constantA}) {
> # This should change constantA from 'bar' to 'foo'
> eval 'use constant constantA => \''.$params{constantA}.'\'';
> warn $@ if $@;
> }
> }
> -----------------
>
> Any comments are highly appreciated.
>
> Thanks in advance,
>
> Paco Zarabozo
>
>
>
> _______________________________________________
> ActivePerl mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>
_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs