http://www.perlmonks.org?node_id=965800


in reply to Sort on Table headers

What do you mean "if two consecutive records have an equal readings". The code takes into consideration if two fields have same values the n sort it via score.

#!/tools/bin/perl use strict; use warnings; use Data::Dumper; open DATA, "file1" or die $!; my %recordsArray; my $header = <DATA>; #capture the header line my @headers = split(/\t+/,$header); while(my $line = <DATA>){ chomp($line); my @records = split(/\t+/,$line); # print "@records"; my $score = $records[2]; my $value = $records[3]; $recordsArray{$score}{$value} = $line; } print $header,"\n"; foreach my $score (reverse sort keys %recordsArray){ foreach my $value (reverse sort keys %{$recordsArray{$score}}){ print $recordsArray{$score}{$value},"\n"; } } ----DATA was modified for ids having same values----- ID distance score value start stop done remaining + N_425 614 17.01 425 40 12 308 322 N_542 1290 18.74 542 53 15 237 251 N_372 870 15.66 372 80 15 262 276 N_236 814 15.70 372 69 13 185 200 --------Result-------------------- ID distance score value start stop done remaining + N_542 1290 18.74 542 53 15 237 251 N_425 614 17.01 425 40 12 308 322 N_236 814 15.70 372 69 13 185 200 N_372 870 15.66 372 80 15 262 276