When using pp, I'm now in the habit of using the -c and -x options so that it can pick up on the needed modules. That should get pp to pick up your "other installed perl modules". If after that pp is still not picking up your .pm files, you can use the -I option to specify an additional path for pp to look in for modules and if you need to, you can use this option multiple times.
Although I personally haven't used this module myself, you could also use App::FatPacker to pack all of the modules that your script uses (including your .pm files) along with your script into one large .pl file. Then you can use pp to package that large .pl file into an executable.