The BEGIN block is there to help figure out the correct LIB path, based on the script's path.
The FindBin module might here you there. Check out the synopsys examples.
Regarding the Pod::Usage problem, what happens if you move the "use Pod::Usage" line outside (before) the BEGIN block? Does that help?