Dan Sugalski wrote:
> 
> Given that on Unix systems $^E and $! are identical, and that $! is
> directly tied to errno, this certainly isn't surprising. Anything that
> afects errno (like, say, IO) may then affect $! and $^E identically.(And
> $!/$^E non-indentically on systems where they're separate)

On Unix the implementation of $! and $^E should be the same -- that's fixed
by the patch I sent (although a more proper version would refactor it (and
add tests:))

> Basically you're using a variable that can be affected by external things
> in a way that pretty much guarantees that external things will be
> happening. That it changes isn't much of a surprise. ($!/$^E may get
> modified by some signal handlers too, depending on what you do, so there's
> not even any guarantee that "$^E = 42; $^E++;" will end up with $^E set to
> 43.

Using the Mac OS X equivalent of truss/strace might help to find out
why errno changes there.

Reply via email to