develooper Front page | perl.perl5.porters | Postings from May 2013

Re: pack() for producing C structs (Was: Re: How on earth did wemanage to break pack() so badly?)

Thread Previous | Thread Next
From:
Peter Martini
Date:
May 1, 2013 17:04
Subject:
Re: pack() for producing C structs (Was: Re: How on earth did wemanage to break pack() so badly?)
Message ID:
CAFyW6MQuodXafEpncMfztWnsf-pL+6tLJVvdQvmv+HhTzFBPjA@mail.gmail.com
On Wed, May 1, 2013 at 12:53 PM, Steffen Mueller
<mail@steffen-mueller.net> wrote:
> [side-track]
>
> On 05/01/2013 06:44 PM, demerphq wrote:
>>
>> My understanding of pack()s original intention was to allow one to
>> construct C structures in Perl. As such introduces a change which
>> basically means one cannot safely put a string into a C structure
>> without the possibility of the entire structure being corrupted by
>> doing so doesn't make sense.
>
>
> In all fairness, if you use pack to do that, you'll be writing VERY
> unportable code due to alignment, padding and friends. But don't listen to
> me: Have a look at the docs for Convert::Binary::C. Marcus knows a lot
> better than I do.
>
> --Steffen

For what it's worth, I often use pack/unpack when I'm working with
network protocols.  The endianness and encoding are well defined and
may differ from the architecture of the system I'm working on.  The
main example I can think of was talking from a SPARC/Solaris or
Intel/linux host to a Windows service, which meant not only did it it
have to pay attention to endianness for the encoded length fields, it
had to convert encoded text data from UTF-16 to UTF-8 as well.

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About