Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Re: Fun with duff's device and AUTOLOAD

by John M. Dlugosz (Monsignor)
on Feb 25, 2004 at 20:59 UTC ( #331811=note: print w/ replies, xml ) Need Help??


in reply to Re: Fun with duff's device and AUTOLOAD
in thread Fun with duff's device and AUTOLOAD

I get "double 8" on ActiveState under win2k, yet the obfu doesn't work.

It does seem to have some issue with %c not working the same as printf, though. Printing 65 gives a nul character output, not 'A'. Printing 3.14 gives the bytes FD 91 BA B8 94 9F. Your print 2.14321574942828e-312, 2.29175545480573e-312; example prints "perl" as expected!


Comment on Re: Re: Fun with duff's device and AUTOLOAD
Re: Re: Re: Fun with duff's device and AUTOLOAD
by ambrus (Abbot) on Feb 25, 2004 at 21:41 UTC

    Maybe I wasn't clear in the explanation.

    $#="%c";print 65; should not print an A. It pushes 65.0 (a double) and "%x" on the C stack, and calls sprintf. Then sprintf sees "%c", so tries to pop an int from the stack. 65.0 is represented as the bytes (00 00 00 00 00 40 50 40)hex, but an int is just 4 bytes so it pops (00 00 00 00)hex which is 0 as an int so it prints a nul char. (On sparc, however, it will get (40 50 40 00)hex, which is 67437568, so it will either print a null character or a multibyte character sequence corresponding to unicode chr 67437568, depending on the version of Perl.)

    Dlugosz, I guess your cpu is an x86, correct me if it isn't.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://331811]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2015-07-06 06:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls