in reply to namespaces and source out

The right way to do it is to make them packages, and pass variables to the subroutines instead of relying on globals.
package Foo; print Bar::hello('world'); package Bar; sub hello { my $who = shift; return "hello $who"; } 1;