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

current code

typical sql query
select strain from sequence where seg in ('seg1', 'seg2', 'seg3', 'seg +4')
which then gets sorted in this sort of way -

  • we want the strains with the most segments (i.e. top strain will have seg 1 though 4), then the strains with only 3 segments, and so on.
  • If two strains both have the same number of segments present, we order alphabetically.
    @sorted =sort { grep( /seg/, keys %{ $result->{$b} } ) <=> grep( /seg/, keys %{ $result->{$a} } ) || lc $a cmp lc $b } keys %{$result}; # result contains sql info.