in reply to Problem With Split
split is best used when you have a separator of some sort to split on. In this case there is no separator - you have a bunch of things packed together - so you'd probably be better off with unpack:
my @splat = unpack '(A4)*', $thing;
That is: unpack this string into (4-character substrings) as many as you can find. (If there can only be two such substrings, you can replace the '*' with '2' to specify that.) Note that this is just dealing with characters, it doesn't know anything about digits - if you need to locate the digits in the string first, you probably want a regular expression for that.
Once you have the right digits separated out, removing leading zeros is as simple as getting perl to treat it as a number. A couple of common idioms for doing that are:
$num = int($string); $num = $string + 0;
With map you can apply that transformation to the stream of strings on its way into the array:
my @splat = map $_ + 0, unpack '(A4)*', $thing;
Hope this helps,
Hugo
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Problem With Split
by debiandude (Scribe) on Jun 16, 2004 at 15:33 UTC |