You shouldn't use $a as variable. $a and $b are special variables in perl, used to hold results from the sort function.
As stated by others, use the Data::Dumper module for printing hashes.
use Data::Dumper;
my %not_a_or_b=();
$not_a_or_b{1}{"a"}{"A"}="FIRST";
$not_a_or_b{1}{"c"}{"B"}="THIRD";
$not_a_or_b{1}{"b"}{"C"}="SECOND";
foreach my $k1 ( sort keys %not_a_or_b ) {
foreach my $k2 ( sort keys %{$not_a_or_b{$k1}} ) {
foreach my $k3 ( sort keys %{$not_a_or_b{$k1}{$k2}} ) {
print "$not_a_or_b{$k1}{$k2}{$k3}\n";
}
}
}
print Dumper(\%not_aor_b);