my @tocheck;
for my $value (values %$self) {
push @tocheck, $value if ref($value) eq 'ARRAY';
}
my %seen;
for my $array (@tocheck) {
$seen{$_}++ for @$array;
}
return grep { $seen{$_} == @tocheck } keys %seen;
####
my ($n, %seen);
for my $array (values %$self) {
next unless ref($array) eq 'ARRAY'; # we're only interested in arrays
$seen{$_}++ for @$array;
$n++;
}
return grep { $seen{$_} == $n } keys %seen;
####
my %seen;
for my $value ( map { ref($_) eq 'ARRAY' ? @$_ : () } values %$self ) {
$seen{$value}++;
}
return grep { $seen{$_} > 1 } keys %seen;