#!/usr/bin/perl use warnings; use strict; my %hash; ; # Skip the header. while () { my ($name, $number, $color) = split; $hash{$name}{$number}{$color}++; } my %returnedHash = %{ $hash{GNAEUS} }; for my $number (keys %returnedHash) { for my $color (keys %{ $returnedHash{$number} }) { print "$number $color $returnedHash{$number}{$color}\n"; } } __DATA__ NAME NUMBER COLOR GNAEUS 1 BLUE GNAEUS 1 RED GNAEUS 3 MAGENTA GNAEUS 3 GREEN GNAEUS 3 GREEN FABIUS 1 BLUE FABIUS 2 YELLOW FABIUS 1 RED