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
    Ahh.. I was unaware of the unpack function. Pretty cool. Thanks.