File::FindBin is a module designed to solve exactly this problem. It won't set the current working directory automatically, but it will tell you where the currently running script is, and you can add that to your library path or simply chdir to it. Remember that you'll need to do this in a BEGIN block before you use the modules that are in that directory.