in reply to Remove unwanted chars and maintain table integrity

To learn you need to solve the problem yourself. So I'll list only some code fragments, you can fill in the rest

AoA is a very good idea. You need an array for each column that could have multiple items in it. If this is only the Pro_ID column, a simple array will do the trick.

To collect the data in your while loop, just ignore the 'W':

if ($array[1]!='W') { $length= $array[3] } if ($array[3]!='W') { push @id, $array[3] }
You should be able to add the lines for count and character too.

If you have read a line that belongs to a new character, just call a subroutine that prints out the previous character with all the information in $count,$length and @id in a loop. You can use perl formats or spin your own formatting.

Don't forget to call the subroutine a last time after your while loop to print the last character

Replies are listed 'Best First'.
Re^2: Remove unwanted chars and maintain table integrity
by Anonymous Monk on May 19, 2010 at 12:42 UTC
    Would you please mind elaborating a little bit more?, I could not follow the lines of code you posted... besides the '!=' confuses me, since it is supposed to be used on numerical and not numerical values right?
      You are right, '!=' should have been 'ne'.

      The code I posted simply stores/remembers any value that isn't 'W'.
      Because I assumed that the length column has only one value to remember (per character), I used a variable instead of an array for the length column.

      Whenever you encounter a new character name in the loop, call a subroutine to output the previous character. I.e. add the following line before the other lines I posted:

      if ($array[0]!='W') { OutputCharacter($char,$count,$length,@id); @id=(); }
      The subroutine OutputCharacter just prints one line per value in @id, and in the first line also the name, count and length. One way to do that is to print the first line separately and then the rest in a loop