You should take great pains to try to pass the function the type of variable it wants, when possible. It will save you a lot of trouble in the long run. Sometimes you might want to provide some extra methods or subroutines to assist in making the interface between Perl and your extension simpler or easier to understand. These routines should live in the .pm file. There is absolutely no excuse for not documenting your extension.
Documentation belongs in the .pm file.
This file will be fed to pod2man, and the documentation embedded within it converted to man page format, then placed in the blib directory. It will be copied to Perl's man page directory when the extension is installed. You may intersperse documentation and Perl code within the .pm file. In fact, if you want to use method autoloading, you must do this, as the comment inside the .pm file explains. See L for more information about the pod format.