"Randy W. Sims" wrote:
James Edward Gray II wrote:
Fact: This has nothing to do with ANY variables, it is the way warn() is designed.
Trivia:
Did you know that $! does NOT contain an error string. It contains the error *number*. The only reason you see a error sting is that it has an overloaded stringification operator that calls strerror() on the numeric value that it contains.
Did you know that $! is one of those "magical" variables that contains both a number and a string at the same time! AMAZING BUT TRUE! Here is an exerpt from the perl source:
I regret to inform you that you are correct :-/
perl -MDevel::Peek -e '$e=$!=2;print Dump($!)'
SV = PVMG(0x1c1bc58) at 0x1aaeb94
REFCNT = 1
FLAGS = (GMG,SMG,pNOK,pPOK)
IV = 2
NV = 2
PV = 0x1aa0128 "No such file or directory"\0
CUR = 25
LEN = 26
MAGIC = 0x1abb470
MG_VIRTUAL = &PL_vtbl_sv
MG_TYPE = '\0'
MG_OBJ = 0x1aaeba0
MG_LEN = 1
MG_PTR = 0x1aa014c "!"I don't know where I got it from that strerror was called in an overriden stringization method, but I would have sworn to it until I saw your message. In fact, I /still/ believe it to be true... just in some other context: maybe a different variable? maybe it was ruby instead of perl? I *know* I got that from somewhere...
Oh, well. Thanks for the correction John.
BTW, anyone know why Devel::Peek won't print the correct data unless the variable is first used in an expression? (i.e. the above one-liner won't work if you take out the '$e=' part of the expression.
Regards, Randy.
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>
