# use Module @LIST is really:
BEGIN {
require Module;
Module->import( @LIST );
}
####
# Bozo.pm
sub go_bozo { return "BOZO!\n" }
1;
####
# script.pl
package Burble;
use Bozo;
package main;
print Burble::go_bozo();
####
# script.pl
package Burble;
use Bozo;
package Wibble;
use Bozo;
package main;
print Burble::go_bozo(); # OK
print Wibble::go_gozo(): # ERROR - doesn't exist
####
# Bozo.pm
package Bozo;
sub go_bozo { return "BOZO!\n" }
1;
####
# script.pl
package Burble;
use Bozo;
package main;
print Bozo::go_bozo(); # OK
print Burble::go_bozo(); # ERROR - doesn't exist
print go_bozo(); # ERROR - main::go_bozo() doesn't exist either
####
# Bozo.pm
package Bozo;
# subclass Exporter
use Exporter;
@ISA = ( 'Exporter' );
sub go_bozo { return "BOZO!\n" }
1;
####
# Bozo.pm
package Bozo;
# subclass Exporter
use base 'Exporter';
sub go_bozo { return "BOZO!\n" }
1;
####
# script.pl
use Bozo;
print Bozo::go_bozo(); # OK
print go_bozo(); # ERROR - main::go_bozo() still doesn't exist
####
# Bozo.pm
package Bozo;
# subclass Exporter
use base 'Exporter';
# define exports
@EXPORT = ( 'go_bozo' );
sub go_bozo { return "BOZO!\n" }
1;
####
# script.pl
package Burble;
use Bozo;
package Wibble;
use Bozo;
package main;
use Bozo;
print Bozo::go_bozo(); # OK
print Burble::go_bozo(); # OK
print Wibble::go_bozo(): # OK
print go_bozo(); # OK