On the security side, for some reason the implementation does not use the ACL to check permissions, it uses the old style DOS permissions, which only has read-only. I think POSIX::access does the same, but I'm not sure and can't test it right now. It might be worth a look.
Otherwise I'm afraid its Win32::FileSecurity.
Please note that just because you have execute access on a Windows script it does not mean you can execute it, and the Windows does not support #! This means, for example, you run a perl script by prefixing 'perl -w'. See also Win32::FetchCommand.