in reply to Module's name and file's name

I am having just as much trouble figuring out what your question is as you are having trouble writing said question!

A project for me may have say 15 project specific modules. I think this is on the order of your project? I think up a TLA (Three Letter Acronynm), like "TDP", "This Darned Project" that describes the project. I use that capitailzed TLA in all file and package names related to the project.

I make a directory like "../TDP/TDP_LIB". The source code (.pl) programs go into ".../TDP". All of the .pm modules for that project go into ".../TDP/TDP_LIB". I name all of the .pm module file names with a name like: "TDP_parsing.pm". That same file name is used within the .pm module as the package name: package TDP_parsing;

A program that uses project specific parsing from TDP, might code as:

uselib "../TDP/TDP_LIB"; #some path to TDP project specific modules use TDP_parsing;
I haven't used the double colon, "::" for paths and package names. All of my packages have an "O/S legal" file name. I usually make the package name to be the same as the O/S name for that file. A package name like "pm::abc" does not meet that requirement. I personally would make that "PM_ABC" because it eliminates one level of directories.

In summary, there does appear to be some ambiguity when using the double colon "::".