Funnily enough, that's exactly what I thought -- so I was going to produce a big 'ta-da' with &package::mySub()... but then I wrote and ran the program you see and it worked.
So, a quick reread of my Perl documentation suggests the following:
- .pm files can be imported straight into the namespace of the using script if the .pm file lacks a package declaration
- As soon as a package declaration is made in a .pm file the standard rules of EXPORTing and importing apply
- So, if I rewrite my code as follows:
##################
# MyPackage
##################
package MyPackage;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(exportedSub);
@EXPORT_OK = qw(exportedOkSub);
$var = 'a variable';
sub exportedSub {
print "Exported sub called!\n";
}
sub exportedOkSub {
print "ExportedOK sub called!\n";
}
1;
#################
# Script.pl
#################
use MyPackage qw(exportedOkSub);
exportedSub();
exportedOkSub();
print "Var: " . $MyPackage::var . "\n";
exit 0;
Then it should work as advertised.
Note, however, that I have done some fudging as MyPackage isn't properly included in my @INC -- so YMMV. :^)
~