What you're seeing is an illusion. Since you're looking at STDOUT (the target of
print) and STDERR (the target of
die) at the same time, it looks like that's the order it's executing in. In all actuality, it's happening in the order you expect, but the buffers are being flushed in the "wrong" order, creating the discrepancy.
Hope this helps!
--
jwest
-><- -><- -><- -><- -><-
All things are Perfect
To every last Flaw
And bound in accord
With Eris's Law
- HBT; The Book of Advice, 1:7