%seen = (); for $element (keys(%foo), keys(%bar)) { $seen{$element}++; } @uniq = keys %seen;
Or more succinctly:
@uniq = keys %{{%foo,%bar}};
Or if you really want to save space:
%seen = (); while (($key) = each %foo) { $seen{$key}++; } while (($key) = each %bar) { $seen{$key}++; } @uniq = keys %seen;