http://www.perlmonks.org?node_id=939696


in reply to Problem with AUTOLOAD and Windows

There are tons of things that can set $!, many of which are not evident on the Perl script. If you are going to check for $! being 0 or not, then you need to set $! to 0 immediately before the code that might set $! and check $! immediately after calling that code.

It isn't terribly surprising that $! was often left at 0 on previous runs. It also isn't terribly surprising that $! wasn't left at 0 on a recent run.

So make two fixes to your AUTOLOAD code. Add $! = 0; right before you call the XS code. Don't even look at $! unless the XS code returns 0.

- tye