sub compare { my @refs = @_; my ($all, $inter, $diff); my %files; foreach my $ref (@refs) { foreach (@$ref) { $files{$_}++; } } $all = [ keys %files ]; foreach my $e (@$all) { push @{ $files{$e} > 1 ? $inter : $diff }, $e; } return ($all, $inter, $diff); }