in reply to Hash key string restrictions?

The important thing here is that variables used as keys are stringified. So, objects will be stringified. Also, undef will be stringified, as demonstrated:
my %x; my $u = undef; my $s = ""; $x{$u} = 1; $x{$s} = 2; print "$x{$u}\n";
These aren't limitations on what can be used, but consequences of using certain values.

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?