SPUG: RE / Split Question
John W. Krahn
krahnj at acm.org
Thu Jul 31 02:02:11 CDT 2003
On Wednesday 30 July 2003 16:54, Orr, Chuck (NOC) wrote:
> Please help with the following dilemma:
> I am being given a glob of data from a web page that I need to
> fix with perl. It comes in as $blob looking like this:
> 425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t ...
> I need to break this up so the word characters associated with the
> numbers stay with their numbers. Ideally, I would have an array like
> 425 501 sttlwa01t
> 425 712 sttlwa01t tacwa02t
> 425 337 tacwa02t
> As you can see, I am not assured of the number of words that will
> follow each set of numbers. Could you please suggest a split or some
> other tool that will turn the glob into the fix?
> $new_array = [ split /(?=[A-Z]\s\d)/,$scalar ];
> Which is as close as we got, does not work. It keeps the split
> characters, but in a funky way that I cannot deal with. It also will
> always miss the last chunk of the glob.
How about this?
$ perl -le'
$glob = "425 501 sttlwa01t 425 712 sttlwa01t tacwa02t 425 337 tacwa02t ";
@array = $glob =~ /( \b\d+ \s+ \d+ (?:\s+ \D\w*)+ )/xg;
print for @array;
425 501 sttlwa01t
425 712 sttlwa01t tacwa02t
425 337 tacwa02t
More information about the spug-list