Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Pack/unpack - understanding the '@' and '.' templates

by Anonymous Monk
on Mar 31, 2013 at 03:45 UTC ( #1026323=note: print w/ replies, xml ) Need Help??


in reply to [SOLVED] Pack/unpack - understanding the '@' and '.' templactes

update: :) good night

1. I understand what C/xa is doing, but what does @ do in this case? but what does @ do in this case?

Looks like a typo to me :)

http://perldoc.perl.org/perlpacktut.html#The-Alignment-Pit gives the use-case for this one, like a lot of these, its weird :)

Here is what I think I kinda know, remove the @ and you get

'x' outside of string in unpack

So I think @ means start from 0 , where 0 is the beginning for the innermost group (), instead of outside the end of the string :)

So C/x says read one byte/octet, then SKIP(x) that amount of bytes, so it eats the first \003, skips next 3 bytes , which are \003\003a

And its a group, so repeats that three times, each time the C/ eating up one byte, so it inches forward

Yeah, I don't think you can do this in one step, I think it's a 2 step operation like shown in the alignment pit

2. How would I make the template skip from the absolute start of the string, rather than from a relative position? e.g.:

Wait a minute, doesn't this mean you understand 1.?

I think you can't do that, now the original makes even less sense to me

Ok, here's the 2step

use 5.12.0; my $raw = "\003\003\003abcdef"; my @offsets = unpack '(C)3', $raw; my $chucks = join ' ', map { '@' . $_ . 'a' } @offsets; say $chucks; say for unpack $chucks, $raw; use 5.12.0; my $raw = "\003\003\003abcdef"; my @offsets = unpack '(C)3', $raw; my $chucks = join ' ', map { '@' . $_ . 'a' } @offsets; say $chucks; say for unpack $chucks, $raw; __END__ @3a @3a @3a a a a

update: HAHAHAHAHAHAAH I DID IT  (C/x! a@)3 gets you aaa, not sure how that works, makes no sense to me, but its straight from gappy alignment pit portion

This is what I don't like about pack/unpack,


Comment on Re: Pack/unpack - understanding the '@' and '.' templates
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (13)
As of 2015-07-07 22:07 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 (93 votes), past polls