#!/usr/bin/env perl package PairUnique; use strict; use warnings; sub new {return bless {}, shift} sub unique { my ($self, $k, $v) = @_; return !$self->{"$k=>$v"}++ ? $v : (); } package main; use strict; use warnings; use Data::Dumper; my %hash; { my $get = PairUnique->new; while () { chomp; my ($k, $v) = split /\s/; my $aref = $hash{$k} //= []; push @$aref, $get->unique($k,$v); } } print Dumper \%hash; __DATA__ bird beak bird beak bird claw bird wings bird feathers snake fangs snake scales snake fangs snake tail