Дополнительная многословная, более читаемая версия того, что вы хотите сделать:
<code>
sub duplicate {
my %value_hash;
foreach my $val (@_) {
$value_hash{$val} +=1;
}
my @arr;
while (my ($val, $num) = each(%value_hash)) {
if ($num > 1) {
push(@arr, $val)
}
}
return @arr;
}
Это может быть значительно сокращено, но я намеренно оставил его подробным, чтобы вы могли следовать за ним.
Я не проверял, хотя, так что следите за моими опечатками.