1. Perform a sort of compile-time 'require' *only if* this module hasn't been 'use'-d before. A table of what modules have already been loaded is maintained in some variable that I don't recall at the moment.
2. Call the 'import'-function (I think) *if* it is present in the 'use'-d package. This is performed on every occurence of 'use'. The import function is the one that can optionally export symbol-names (like your constants) to the calling package.
Building your own import function is a hassle, so the easy way is to use the standard Exporter package... The man-page of the Exporter package can explain everything you want to know (and a lot more) about exactly how to use it. For starters, this should do:
--file foo.pm--
If you'd just require'd the foo package, you would need to use $foo::const1 to access the constant.package foo; use Exporter; @ISA=qw(Exporter); @EXPORT=qw($const1 $const2 $const3); # rest of package including constant data
If you'd use'd the foo package, the same would still work, but you would also have access using $const1 from the calling package.
Hope it helps...
In reply to Re: Re: require() turns off strict?
by Gilimanjaro
in thread require() turns off strict?
by BioHazard
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |