use Data::Dumper; %input=(r=>[1..10],s=>[1..10],t=>[5..10],u=>[11..20]); grep{$hash{"$input{$_}[0]_$input{$_}[-1]"}++;$tmp{$_}=$input{$_} if $hash{"$input{$_}[0]_$input{$_}[-1]"}==1}keys %input; print Dumper(\%tmp);