in reply to Checking for duplicate subroutine names
What flexvault said: you should be safe from accidental overwriting if you put your functions in a separate package. However, you still have to trust your users not to do Evil Things---as far as I know there's no way to write-protect a namespace so even an ill-intentioned user can't screw with your code.
Edit: actually it's not "package something.pm" but "package Something", conventionally in a file called "Something.pm". User package names should not be all-lowercase.