I've been working on a script that accepts some command line parameters from the user. The first few lines in the program setup the constants I want to use in the rest of the program.
# Because of my C++ background
use constant PROJECT => $ARGV[0];
use constant ARCHIVE => $ARGV[1];
# debuggging
print "PROJECT value = " . PROJECT . "\n";
print "ARCHIVE value = " . ARCHIVE . "\n";
Later on in the program, I want to make a decision about the parameters, so I created the following if statment:
if( ARCHIVE eq "") {
warn( "No archive file was supplied.\n");
exit 1201;
}
Without specifying an ARCHIVE name, I would expect the script to die. It doesn't. So I started reading my trust Camel book on use constant. It said that constant is evaluated at compile time. That makes a lot of sense but my debug output shows:
PROJECT value = P:\Software
ARCHIVE value =
Why is perl able to set the PROJECT value, but can't work with the lack of an ARCHIVE value? Is this an error with my copy of Perl (ActiveState 5.6.1)?