package SharedVariables;
use base Exporter;
# Default export
@EXPORT = qw( $scalar1 $scalar2 @array1 );
# Possible to export these
@EXPORT_OK = qw( $scalar1 $scalar2 @array1 @array2 );
# Named groups to export
%EXPORT_TAGS = (
scalars => [ qw( $scalar1 $scalar2 ) ],
arrays => [ qw( @array1 @array2 ) ],
);
1;
####
package Foo;
use SharedVariables;
sub Print {
print "Foo Scalar1 $scalar1\n";
}
sub Set {
$scalar1 = 'Foo';
print "Set Foo\n";
}
1;
####
package Bar;
use SharedVariables qw(:scalars);
sub Print {
print "Bar Scalar1 $scalar1\n";
}
sub Set {
$scalar1 = 'Bar';
print "Set Bar\n";
}
1;
####
use SharedVariables qw(:DEFAULT);
use Foo;
use Bar;
$scalar1 = 'Initialized';
print "Main Scalar1 $scalar1\n";
Foo::Print;
Foo::Set;
Foo::Print;
Bar::Print;
Bar::Set;
Bar::Print;
$scalar1 = 'Main';
Foo::Print;
Bar::Print;
__END__
C:\temp> test.pl
Main Scalar1 Initialized
Foo Scalar1 Initialized
Set Foo
Foo Scalar1 Foo
Bar Scalar1 Foo
Set Bar
Bar Scalar1 Bar
Foo Scalar1 Main
Bar Scalar1 Main