@common = inter ( \%foo, \%bar, \%joe ); sub inter { my %seen; for my $href (@_) { while (my $k = each %$href ) { $seen{$k}++; } } return grep { $seen{$_} == @_ } keys %seen; } ======================================================= #### __DATA__ my %foo = ( 'one' => 1, 'two' => 2, 'three' => 3, ); my %bar = ( 'two' => 5, 'four' => 6, ); my %joe = ( 'three' => 7, 'four' => 8, 'five' => 89, ); #### three five one two four