package Foo;
use strict;
use warnings;
use Exporter;
our @ISA = qw(Exporter);
our $foo = "FOO";
our @EXPORT = qw( $foo );
1;
####
package Client1;
use strict;
use warnings;
use Foo;
1;
####
package Client2;
use strict;
use warnings;
use Foo;
1;
####
#!/usr/bin/perl
use strict;
use warnings;
use Client1;
use Client2;
print "Client1::foo=", $Client1::foo, "\n";
print "Client2::foo=", $Client2::foo, "\n";
#both variables $Client1::foo and $Client2::foo are just other names for $Foo::foo,
#so the second assignment wins
$Client1::foo = 'CLIENT1';
$Client2::foo = 'CLIENT2';
print "Client1::foo=", $Client1::foo, "\n";
print "Client2::foo=", $Client2::foo, "\n";
####
Client1::foo=FOO
Client2::foo=FOO
Client1::foo=CLIENT2
Client2::foo=CLIENT2