### begin_: tryStuffAlpha.pm
package tryStuffAlpha;
use strict;
use warnings;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
use vars qw( $PermaLink $OppositePermaLink );
$VERSION = 1.00; # Or higher
@ISA = qw(Exporter);
use tryStuffBeta;
### begin_: init vars
$PermaLink = "PERMALINK-ALPHA\n";
$OppositePermaLink = "AOppositeLink=" .$tryStuffBeta::Permalink."\n";
### begin_: subroutines
push @EXPORT_OK, qw( SayHello );
sub SayHello {
my $strOut;
$strOut = "Alpha Says Hello World! \n";
return $strOut;
}###end_sub
push @EXPORT_OK, qw( SayOpposite );
sub SayOpposite {
my $strOut;
$strOut = "Say Opposite Alpha =".tryStuffBeta::SayHello();
return $strOut;
}###end_sub
### begin_: end perl
1;
__END__
####
### begin_: tryStuffBeta.pm
package tryStuffBeta;
use strict;
use warnings;
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
use vars qw( $PermaLink $OppositePermaLink );
$VERSION = 1.00; # Or higher
@ISA = qw(Exporter);
use tryStuffAlpha;
### begin_: init vars
$PermaLink = "PERMALINK-BETA\n";
$OppositePermaLink = "BOppositeLink=" .$tryStuffAlpha::Permalink."\n";
### begin_: subroutines
push @EXPORT_OK, qw( SayHello );
sub SayHello {
my $strOut;
$strOut = "Beta Says Hello World! \n";
return $strOut;
}###end_sub
push @EXPORT_OK, qw( SayOpposite );
sub SayOpposite {
my $strOut;
$strOut = "Say Opposite Beta =".tryStuffAlpha::SayHello();
return $strOut;
}###end_sub
### begin_: end perl
1;
__END__
####
### begin_: tryStuff_Caller.pl
use strict;
use warnings;
use tryStuffAlpha; ###
use tryStuffBeta; ###
### begin_: main
print "1: ". tryStuffAlpha::SayHello(); ### OK
print "2: ". tryStuffBeta::SayHello(); ### OK
print "3: ". tryStuffAlpha::SayOpposite(); ### OK
print "4: ". tryStuffBeta::SayOpposite(); ### OK
print "5: ". $tryStuffAlpha::PermaLink; ### OK
print "6: ". $tryStuffBeta::PermaLink; ### OK
print "7: ". $tryStuffAlpha::OppositePermaLink; ### FAILS
print "8: ". $tryStuffBeta::OppositePermaLink; ### FAILS
####
### Run Result Alpha (tryStuffAlpha.pm run all by itself)
Use of uninitialized value ... at tryStuffAlpha.pm line 29.
Use of uninitialized value ... at tryStuffBeta.pm line 29.
Subroutine SayHello redefined ... tryStuffAlpha.pm line 35.
Subroutine SayOpposite redefined ... tryStuffAlpha.pm line 42.
Use of uninitialized value ... tryStuffAlpha.pm line 29.
### Run Result Beta (tryStuffBeta.pm run all by itself)
Use of uninitialized value ... at tryStuffBeta.pm line 29.
Use of uninitialized value ... at tryStuffAlpha.pm line 29.
Subroutine SayHello redefined ... tryStuffBeta.pm line 35.
Subroutine SayOpposite redefined ... tryStuffBeta.pm line 42.
Use of uninitialized value ... tryStuffBeta.pm line 29.
### Run Result Caller (tryStuff_Caller.pm run all by itself)
Use of uninitialized value in concatenation (.) or string at tryStuffBeta.pm line 29.
Use of uninitialized value in concatenation (.) or string at tryStuffAlpha.pm line 29.
1: Alpha Says Hello World!
2: Beta Says Hello World!
3: Say Opposite Alpha =Beta Says Hello World!
4: Say Opposite Beta =Alpha Says Hello World!
5: PERMALINK-ALPHA
6: PERMALINK-BETA
7: AOppositeLink=
8: BOppositeLink=