name1 1 2 3 4 typex
name2 3 4 5 6 typey
name3 2 3 3 1 typex
name4 5 3 4 2 typez
name5 9 8 2 1 typea
####
typea
name5 9 8 2 1
typex
name1 1 2 3 4
name3 2 3 3 1
typey
name2 3 4 5 6
typez
name4 5 3 4 2
####
typex
......
typey
.....
typea
.....
typez
......
####
while ()
{
my @fields = split;
my $key = pop @fields;
my $line = [@fields];
push @{$data{$key}}, $line;
}
close TEMP;
foreach my $key (sort keys %data);
{
print "$key\n";
my @lines = @{$data{$key}}; # list of lines, from hash
foreach my $line (@lines);
{
my @fields = @$line;
print "%s %d %d %d %s" @fields;
}
print "\n";
}