in reply to How can I write and call subroutines in separate files?

If you're using strict, you need to declare the package name as well (and it's probably best to if your code's big enough to suggest splitting :)
# 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 file +s) 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!