# 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