# file one use File2; File2::setup(); main(); # or ::main() (this package) or main::main() very specific # "default" package name for main script (the one requiring other files) is 'main' # print var foo from package File2 print $File2::foo . "\n"; sub main { print "I am in the main subroutine.\n"; } # file 2 package File2; sub setup { print "Setting up.\n"; } $::foo = 'bar'; # or define explicitely $File2::foo = 'bar'; 1; # use'd files have to return true!