my %hash; { my %attribseen; while () { chomp; my ($k, $v) = split /\s/; push @{$hash{$k}}, $v unless $attribseen{"$k|$v"}++; } } print Dumper \%hash; __DATA__ bird beak bird beak bird claw bird wings bird feathers snake fangs snake scales snake fangs snake tail