Update: this comment was moved from another node where the OP was garbled.
A bit hard to decipher because although you did use code tags you didn't use them properly. Quite a few improvements could be made but a quick solution would be to change your function like so:
sub strip_US_CA_dup_hols {
for my $country (@cntry_of_issue) {
for my $holiday (@{$countries{$country}}) {
$seen{$holiday}++;
}
}
for my $country (@cntry_of_issue) {
my $aref = $countries{$country};
@$aref = grep { $seen{$_} < 2 } @$aref;
}
}
# Prints:
'US' => [
'20120116',
'20120528',
'20120704',
'20121122'
],
'CA' => [
'20120521',
'20120702',
'20120806',
'20121008',
'20121226'
]