http://qs1969.pair.com?node_id=1116893


in reply to Re: pack() v unpack() padding: bug or ???
in thread pack() v unpack() padding: bug or ???

I donít see a problem here, either. The template Z2 specifies a 2-byte null-terminated string. Packing 'fr' of course requires 3 bytes, so the second character is thrown away and the packed result is f\0. Isnít that what itís supposed to do?

Can you think of a good use for that? Or even a not good use?

Mentioned in the docs is "Z A null-terminated (ASCIZ) string, will be null padded.". Wouldn't you expect it to grab the 2 characters and then add the null byte (if required)?

As is, it makes: pack 'Z1', $anything; a very complicated why of generating a null.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked

Replies are listed 'Best First'.
Re^3: pack() v unpack() padding: bug or ???
by roboticus (Chancellor) on Feb 16, 2015 at 16:43 UTC

    BrowserUk:

    Since it specifies ASCIZ, I'd expect it to work like it does. Isn't 'a2' the behaviour you're asking for?

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      Isn't 'a2' the behaviour you're asking for?

      It depends whether you mean the behaviour I'm looking for in the OP; or the behaviour I expect from Z; but actually, the answer is no in both cases.

      It's not a substitute for (my expected behaviour of) Z because it doesn't "null terminate", it only "null pads":

      C:\test>p1 print unpack 'C*', pack 'a2', $_ for qw[ fr x ];; 102 114 120 0

      And my OP question relates to unpack rather than pack. Athanasius picked up on a comment in a code sample that was more of a reminder to myself rather than a part of the OP.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
      In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked