# File: Foo.pm 1; # keep require happy package Foo; sub hello { print "Hello from Foo!\n"; } __END__ #### # File: foo.pl require Foo; sub hello { print "Hello from main!\n"; } hello(); # prints "Hello from main!\n"; main::hello(); # prints "Hello from main!\n"; ::hello(); # prints "Hello from main!\n"; Foo::hello(); # prints "Hello from Foo!\n"; __END__ #### # File: Foo.pm 1; # keep require happy package Foo; sub hello { print "Hello from Foo!\n"; } package Foo_Helper; sub hello { print "Hello from Foo_Helper!\n"; } __END__ #### # File: foo.pl require Foo; sub hello { print "Hello from main!\n"; } hello(); # prints "Hello from main!\n"; Foo::hello(); # prints "Hello from Foo!\n"; Foo_Helper::hello(); # prints "Hello from Foo_Helper!\n"; __END__ #### require Foo_Helper; #### Can't locate Foo_Helper.pm in @INC (@INC contains: /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/local/lib/site_perl .) at foo.pl line 2. #### # File: Foo.pm 1; # keep require happy package Foo_Helper; sub hello { print "Hello from Foo_Helper!\n"; } package Bar; sub hello { print "Hello from Bar!\n"; } # Look, Ma! No Foo! __END__ #### # File: foo.pl require Foo; sub hello { print "Hello from main!\n"; } hello(); # prints "Hello from main!\n"; Bar::hello(); # prints "Hello from Bar!\n"; Foo_Helper::hello(); # prints "Hello from Foo_Helper!\n"; __END__ #### # File: Foo.pm 1; # keep require happy package Foo; sub hello { print "Hello from Foo!\n"; } __END__ #### # File: More_Foo.pm 1; # keep require happy package Foo; sub hello_2 { print "Still in Foo!\n"; } __END__ #### # File: foo.pl require Foo; require More_Foo; sub hello { print "Hello from main!\n"; } hello(); # prints "Hello from main!\n"; Foo::hello(); # prints "Hello from Foo!\n"; Foo::hello_2(); # prints "Still in Foo!\n"; __END__ #### require Foo; require More_Foo; #### Undefined subroutine &Foo::hello_2 called at foo.pl line 10. #### # File: Foo.pm require More_Foo; 1; # keep require happy package Foo; sub hello { print "Hello from Foo!\n"; }