in reply to function encapsulation

well... there are two ways of doing this (that i can think of, i'm sure there are more). the difference between use and require is that use automatically calls the export (or is it import?) method from the package/module/file that you're using. the way you're calling the function now, either use or require will do what you want.

if you want to be able to call the function just by typing functionname(parameters) (if you want to import it into your namespace) you have to declare a export function within the module/package/file. the easiest way of doing this is by using the exporter module. just type:
BEGIN { use Exporter(); @ISA = qw( Exporter ); @EXPORT = qw( &subroutine1 $variable1 ); }
where &subroutine1 and $variable1 can be any variable and subroutine names.

update: y'know... its interesting how each person knows different bits of information. i think this thread really highlights that.