In the module interface, the
require'd file is expected to
define subroutines in the same-named package, not the
caller's package. So, for example, a portion of the
File::Basename file might look something like
this, if you took out all the good stuff:
package File::Basename;
sub dirname { ... }
sub basename { ... }
sub fileparse { ... }
1;