in reply to packing a floating point

$ perl -e'print pack "d>", -324978.08' | od -t x1 0000000 c1 13 d5 c8 51 eb 85 1f 0000010

pack

Without the ">", the output will be platform-dependent.

Replies are listed 'Best First'.
Re^2: packing a floating point
by DrHyde (Prior) on Oct 21, 2010 at 10:02 UTC
    Without the ">", the output will be platform-dependent.

    Of course, with it, it's perl version dependent :-)

    $ perl -e'print pack "d>", -324978.08' Invalid type '>' in pack at -e line 1. $ perl -v This is perl, v5.8.8 built for i686-linux
      with it, it's perl version dependent

      If the output from pack 'd', ... on a earlier version of Perl, is the wrong endian for the need, it can be 'converted' by by applying reverse to the packed value:

      c:\test>perl -E"say pack 'd<', 12345.67689" | od -t x1 0000000 7f de 54 a4 d6 1c c8 40 0d 0a 0000012 c:\test>perl -E"say pack 'd>', 12345.67689" | od -t x1 0000000 40 c8 1c d6 a4 54 de 7f 0d 0a 0000012 c:\test>perl -E"say pack 'd', 12345.67689" | od -t x1 0000000 7f de 54 a4 d6 1c c8 40 0d 0a 0000012 c:\test>perl -E"say scalar reverse pack 'd', 12345.67689" | od -t x1 0000000 40 c8 1c d6 a4 54 de 7f 0d 0a 0000012
Re^2: packing a floating point
by Spooky (Beadle) on Oct 21, 2010 at 16:00 UTC
    Ikegami, Thanks! I'm trying to create another variable instead of piping to the screen - not sure about the "od -t xl" - how would I create a $var with the same output?

      If you want to assign a value to a var instead of printing it, well... do just that.

      print $val;
      becomes
      my $var = $val;