my %hash = (1 => 'One', 2 => 'Two', 3 => 'One'); # fixed: not {} my %seen; foreach my $key (keys %hash) { push @{$seen{$hash{$key}}}, $key; } foreach (keys %seen) { print "Keys having $_ as value: " . join(', ', @{$seen{$_}}) . "\n" if @{$seen{$_}} > 1; }