in reply to Re^2: Merging/Rearranging Tables
in thread Merging/Rearranging Tables

The only minor modification, I would do - keep the header line

That would not process in the code below - it is saving genes and their values - if you want to save the headers the code would need to be rewritten to accomplish that.

while (<>) { next if /^ID/; chomp; # if $ARGV = 'tab1.txt', $table will = 'tab1' # unless $table is already initiallized. # $table is uninitiallized on the first read # and after end of file for every file # (see below: $table = '' if eof;) ($table = fileparse $ARGV) =~ s/\.txt$// unless $table; # If the column count for this table is not already # stored, then use the transliteration operator to count # the number of pipes (# of columns) and store it. $col_cnt{$table} ||= tr/|//; my ($gene, $cols) = split /\s*\|\s*/, $_, 2; # Here columns are not stored in an array, but in a string # if the data is: # gene 3 | value 3.1 | value 3.2 # then $cols would be: # 'value 3.1 | value 3.2' $data{$gene}{$table} = $cols; $table = '' if eof; }
Does this explain better? I suspect that some of your question is about $ARGV and where that comes from and the input (angle) operator (while (<>)) and reading files from @ARGV.

Chris

Replies are listed 'Best First'.
Re^4: Merging/Rearranging Tables
by homeveg (Acolyte) on Feb 16, 2007 at 14:25 UTC
    Hi,
    Thanks again for your answer!
    You was right, I had questions about the reading from @ARGV, but can not formulate it correctly, therefore I was asking for your comments in general. :)
    No it is clear for me what is going on.
    In addition - nsort usage is very actual for my case, as long as i really have the situation of mixed names, when you have both characters and numbers.
    Cheers,
    Evgeniy
Re^4: Merging/Rearranging Tables
by Cristoforo (Curate) on Feb 17, 2007 at 21:17 UTC