don't use POSIX just to get EPERM and ESRCH - use %! instead
fix a few problems with the DynaLoader fallback, e.g. $_loader was being set even when DynaLoader failed, fix a do where we meant eval, and stop relying on $@ checking instead of eval's return value