This is a pathing issue. When trying to resolve modules, perl uses the module name to resolve what file to look in, and checks the directories in
@INC. One of those entries is usually
., so when your modules are in the local path, you find them. You can address this issue in a couple ways:
- You could use lib, which will modify @INC at compile time.
- You could invoke perl with -I and explicitly include the path
- You could modify your hashbang to explicitly include the path to your libraries, as per the previous solution
- You could parse $0, perhaps with File::Basename, and explicitly add that to @INC. For that to work, it needs to be in a BEFORE block.
All in all, you probably want the first option.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.