Re: Sorting and grouping question

[email protected] ("Li, Jialin")
Newsgroups perl.beginners
Message-ID <[email protected]>
On Thu, May 15, 2008 at 12:13 PM, ANJAN PURKAYASTHA <
[email protected]> wrote:

> Hi,
> here is a problem I'm working on. It's not PERL-specific, rather it is a
> problem in sorting followed by grouping.
> Suppose I have a set of lines that have tab-delimited text, thus:
> 1  w   3   wer
> 2  a   4    rte
> 4  w   2    weg
> 6  d  4    fhg
> 5  d   7   dfl
> 6  w   4   ald
> 8  a   3   dsl
>
> I would like to first sort the lines based on the 2nd token (w,a, w, d,
> etc)
> and then group the lines based on the 2nd token.
>
> At the end of this sorting/grouping I should have the lines grouped thus:
> 2  a   4    rte
> 8   a   3   dsl
>
> 6   d  4    fhg
> 5   d   7   dfl
>
> 1  w   3   wer
> 4  w   2    weg
> 6  w   4   ald
>
>
> I can figure out the sorting. Are they any command/modules to do the
> grouping based on identical tokens?
>
> appreciate your input.
>
>
> tia,
> anjan
>
>
>
> --
> ANJAN PURKAYASTHA, PhD.
> Senior Computational Biologist
> ==========================
>
> 1101 King Street, Suite 310,
> Alexandria, VA 22314.
> 703.518.8040 (office)
> 703.740.6939 (mobile)
>
> email:
> [email protected];
> [email protected]
>
> http://www.vbi.vt.edu
>
> ==========================
>


hash of array will solve your problem

use strict;
use warnings;

my %HofA;

map { push @{ $HofA{ (split)[1] } },  $_  }  <DATA> ;

for my $key (sort keys %HofA) {
  print $_ for @{ $HofA{$key} };
  print "\n";
}


__DATA__
1  w   3   wer
2  a   4    rte
4  w   2    weg
6  d   4    fhg
5  d   7   dfl
6  w   4   ald
8  a   3   dsl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.