http://qs321.pair.com?node_id=433243


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

BEGIN { }
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 that
use constant BASE => $Base;
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 to
use constant BASE => 'mybase';
is sufficient.