bliako has asked for the wisdom of the Perl Monks concerning the following question:
Good Monks warm salutations,
I am trying to require a module and use a constant and a variable from it but I get an error and a warning respectively.
This is the module:
# XYZ.pm package XYZ; use strict; use warnings; require Exporter; our @ISA=qw/Exporter/; our @EXPORT_OK = qw/PI CONST/; our $PI = 3.14; use constant CONST => 10.10; 1;
And this is how I require it:
# example.pl use strict; use warnings; use lib '.'; require XYZ; print "PI=".$XYZ::PI."\n"; print "CONST=".XYZ::CONST."\n";
I get an error:
Bareword "XYZ::CONST" not allowed while "strict subs" in use at exampl +e.pl line 13. Execution of example.pl aborted due to compilation errors.
Now, if I comment out the line using CONST then I get this warning:
Name "XYZ::PI" used only once: possible typo at example.pl line 11. PI=3.14
I have deliberately not used XYZ->import(qw/PI CONST/); as I prefer to use the full name of variables and subs from other modules. But it makes no difference as to the warnings and errors mentioned above.
Can you please shed some light?
|
---|