in reply to Using constants. What am I doing wrong?
Why doesn't the code below print "mybase"?
In Perl, execution of a script doesn't necessarily happen top-to-bottom. Certain constructs, notably
blocks, are executed as they are encountered. The use keyword is also processed when encountered, so that definitions it pulls in are available as the rest of the script is compiling. In your script, this means thatBEGIN { }
is being executed before $Base has been assigned a value. Since the purpose of the constant module is to establish constants, simply rewriting that line touse constant BASE => $Base;
is sufficient.use constant BASE => 'mybase';
In Section
Seekers of Perl Wisdom