Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Dear monks,
let's set so double the killer delete select all.
Sorry. I'll try that again.
I am parsing binary data with unpack. The binary data consists of segments of six bytes. There are hundreds of such six-byte datums stored in a single binary string.
The binary data looks something like this:
my $data = pack("H*", "0000230ebb0000002b0ece000000330ee200");
I can do unpack("(CCSS)*", $data); and it will output an array like: [0,0,3619,187,0,0,3627,206,0,0,3635,226]
However, I would like it to output an array like: [[0,0,3619,187],[0,0,3627,206],[0,0,3635,226]]
i.e. so that each of the six-byte segments form an arrayref of their own.
I read the venerable node 539664 but was none the wiser.
Can unpack() do this or do I need to just loop over the string with substr() and unpack one segment at a time?
I hope this question was clear enough; it's been a long time since I've asked anything.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: unpack into arrayrefs?
by salva (Canon) on Feb 22, 2022 at 16:25 UTC | |
by Anonymous Monk on Feb 22, 2022 at 19:30 UTC | |
by hippo (Bishop) on Feb 22, 2022 at 21:11 UTC | |
Re: unpack into arrayrefs?
by Tux (Canon) on Feb 22, 2022 at 16:54 UTC | |
by ikegami (Patriarch) on Feb 22, 2022 at 17:15 UTC | |
Re: unpack into arrayrefs?
by Fletch (Bishop) on Feb 22, 2022 at 16:23 UTC |