in reply to splitting a sequence using unpack
I think if you read the documentation for pack/unpack youd know all you need to know. (see perlfunc) But the brief version is: "a3" means extract the input as sequences of 3 ascii chars (ie make a string out of the first three bytes). the 'x' operator is the element/string multiplier. In this context it repeats "a3" a certain number of times. So what the overall effect is is to divide your input string into as many three character sequences as there are in the string (assuming the strings length is a multiple of 3). Try doing some one liners to see what is going on:
D:\Development>perl -e "print 'a3' x 10" a3a3a3a3a3a3a3a3a3a3
This use of pack is quite fast for the job it does but has a disadvantage that the string must be stored twice in memory and the pack string must be created which will only be slightly shorter. If you only need to deal with each three character sequence at a time it may be better to do
while ($seq~=/\G(...)/sg) { print "Got: $1\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: splitting a sequence using unpack
by Taulmarill (Deacon) on Mar 01, 2005 at 12:23 UTC | |
|
Re^2: splitting a sequence using unpack
by BrowserUk (Patriarch) on Mar 01, 2005 at 12:25 UTC | |
by Taulmarill (Deacon) on Mar 01, 2005 at 12:33 UTC | |
by BrowserUk (Patriarch) on Mar 01, 2005 at 12:47 UTC | |
by Anonymous Monk on Mar 01, 2005 at 13:05 UTC | |
by BrowserUk (Patriarch) on Mar 01, 2005 at 13:21 UTC |