# Test module foo
package Foo;
use Bar;
#use Bar qw(BarFunc BarSub);
BEGIN {
require Exporter;
# set the version for version checking
our $VERSION = 1.00;
# Inherit from Exporter to export functions and variables
our @ISA = qw(Exporter);
# Functions and variables which are exported by default
our @EXPORT = qw(FooFunc FooSub);
# Functions and variables which can be optionally exported
our @EXPORT_OK = qw();
}
sub FooFunc {
return 'I am the FooFunc !';
}
sub FooSub {
return 'FooSub reporting in !';
}
1;
Bar.pm
# Test module foo
package Bar;
use Foo;
#use Foo qw(FooFunc FooSub);
BEGIN {
require Exporter;
# set the version for version checking
our $VERSION = 1.00;
# Inherit from Exporter to export functions and variables
our @ISA = qw(Exporter);
# Functions and variables which are exported by default
our @EXPORT = qw(BarFunc BarSub);
# Functions and variables which can be optionally exported
our @EXPORT_OK = qw();
}
sub BarFunc {
return "I, BarFunc, solemnly declare: ".FooFunc()."\n";
}
sub BarSub {
print "Howdy, Stranger !\n";
print "I'm BarSub, and I'm going to tell you a secret: '".FooSub()
+."'\n";
}
1;
perlTest.pl
use Foo;
use Bar;
print FooFunc()."\n";
BarSub();
Now, when I run the command: perl perlTest.pl, I get the following output:
I am the FooFunc !
Howdy, Stranger !
Undefined subroutine &Bar::FooSub called at Bar.pm line 30.
Is the problem clearer now ?
EDIT:
Also, if I comment out the "use Foo;" and "use Bar;" lines from the modules, and uncomment the longer use lines (the ones with qw(...) on them), I get exactly the same output. |