SPUG: RE / Split Question

John Subaykan cansubaykan at hotmail.com
Wed Jul 30 19:44:44 CDT 2003

if you know that you always have 3 digits, space, 3 digits, or even some 
digits, space, some digits:

You can use a while loop (here is one possible way):

my @array;

while ($scalar =~ /((?:\b\d+\s+)+.+?)(?=$|\b\d)/g) {
    push @array, $1;

you can use split:

my @array2 = split /\s(?=\d+ \d+)/, $scalar;

----Original Message Follows----

Hello All,

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.

Seattle Perl Users Group Mailing List
POST TO: spug-list at mail.pm.org   Wiki: spugwiki.perlocity.org
ACCOUNT CONFIG: http://mail.pm.org/mailman/listinfo/spug-list
MEETINGS: 3rd Tuesdays, U-District, Seattle WA
WEB PAGE: www.seattleperl.org

The new MSN 8: advanced junk mail protection and 2 months FREE*  

More information about the spug-list mailing list