If the question is "how do I keep things straight in the code that I write", the answer would be that I use the prefixes "full-" and "base-" a lot to indicate file names with and without paths (and if I were doing a lot with relative paths I would probably use "rel-" a lot). I also often use words like "location" or "loc" if I mean a directory without a file.
If the question is, how do I keep this straight in the existing modules... well, one thing that helps is that I use templates to create new perl code and these templates already include the modules that I use most commonly, with an import list that specifies the routines I want most often. This makes at least *some* parts of the problem slightly easier: I don't need to remember which oddly-named module the "basename" function is stashed inside of, it's always just there.