in reply to Hash problem: each() failure

Further to what Corion said, you actually created a hash with a single key. The key was a hash reference and its value undef. The braces {...} create an anonymous hash and return a reference to it. You could have done this:
my $Cls = {'P','a','N','b','U','c'}; print %$Cls,": \n\n"; while ( my ($k, $v) = each(%$Cls) ) { print "$k => $v\n"; }
Note in the print statement I changed the '.' to a ','. The dot operator forces the hash into scalar context, which is rairly useful.