my %holiday; while () { my (undef, undef, $cc, undef, undef, $date) = split /,/; $holiday{$cc}{$date} = 1; } delete $holiday{US}{$_} for keys %{$holiday{CA}}; delete $holiday{CA}{$_} for keys %{$holiday{US}}; # Turn into a hash of array: $holiday{$_} = [sort keys %{$holiday{$_}}] for qw[US CA];