Variables are exported in exactly the same way as subroutines are (tho' you'll need to ensure that they are package variables, not lexical variables).
See Exporter for more details.
"The first rule of Perl club is you do not talk about
Perl club."
-- Chip Salzenberg
You can export variables using exactly the same [module://Exporter] mechanism as you can with subroutines. E.g:
(PackVar.pm):
package PackVar;
use base Exporter;
use vars qw(@EXPORT $Test);
@EXPORT = qw($Test);
$Test = 1;
1;
(test.pl):
use strict;
use PackVar;
print $Test,"\n";
which works fine. Note that the exported variables must be package and not lexical variables: you need to declare them in the module with use vars or our (or use the fully package qualified name) and not declare them with my.
However you really, really, really do want to think carefully about exporting variables like this even more than you do with subroutines as this constitutes a more serious pollution of the callers namespace with a higher risk of collision, unless you have absolutely no way around this you should use fully package qualified names (e.g. $PackVar::Test) in the caller and document this usage.
/J\
It's somewhat safer if you use @EXPORT_OK rather than @EXPORT and make the caller explicitly use PackVar qw( $Test ) to get the variable in their namespace. That also documents where $Test is coming from in the using code.
But seconded on the recommendation to prefer fully qualified names; if I don't I make sure to use the explicit import (then again I almost always use an explicit import list for subs as well . . .).
my @AoA = (
#Array of Array Stuff
);
my %fundHash = (
# Hash Stuff
);
# return array reference
sub return_AoA {
return \@AoA;
}
# return hash reference
sub return_fundHash {
return \%fundHash;
}
use perlMod; my $AoA = perlMod::return_AoA(); my $fundHash = perlMod::return_fundHash();
my $toMail = $$AoA[$i][2] . "\@mail.host";
perlmonks.org content © perlmonks.org and davorg, Fletch, gellyfish, jeanluca, Tobin Cataldo
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03