in reply to can't use unpack or split??

seaver,
Here is code that will work for the limited data sample you provided:
while ( <DATA> ) { my @col = /^(\w{3}) (.{1,5})\s+(\w+)\s+([01?]) ([01?]) ([01?]) ([0 +1?]) ([01?])$/; print join "\t" , @col; print "\n"; }
Of course, depending on all the factors of your situation, there is likely a better solution - perhaps involving pre-processing. In any account - enjoy.

L~R

Update: Though it was perfectly fine, I changed .* to .{1,5} after reading about the constraint elswhere in the thread

Replies are listed 'Best First'.
Re^2: can't use unpack or split??
by seaver (Pilgrim) on Jun 07, 2004 at 20:22 UTC
    Limbic~Region

    I'm afraid I dont understand how the '.*' will capture a space within the second column, seeing it's followed by a '\s+'?

    Another thing, that had just occured to me:

    The letter present in the third column is identical to one of the letters(first or second) in the second column.

    So if I checked that, I'd know if a space turned up in the wrong place, because the letters don't check out right?

    Sam

      seaver,
      I'm afraid I dont understand how the '.*' will capture a space within the second column, seeing it's followed by a '\s+'?

      So you ran the code, saw that it works, but didn't know why.

      I would suggest perldoc perlre or perhaps The Owl Book. It works because I have anchored it at both ends ^ and $ and forced the other spaces where appropriate. Since general use of .* is frowned upon, I have modified it after reading your more constraining information here.

      Cheers - L~R