Responding to my own post.
That's the annoying but seemingly impossible to avoid mantra of a good perl developer. Exclude them at your own risk, and only when you know why you are doing so. You really needed to find out where the code just would not work.
As previously remarked, your value assignment strategy does not do what you think. Since '=>' is just a sophisticated comma, your hash assignment is interpreted as:
%colorhash = (CCgray => "0", "0" => "0", CCwhite => "1", "0" => "0", etc.
As mentioned before, the quotes around clearly numeric values are unnecessary.
Next, for some reason, your example has:
Obviously, the array brackets are missing.
You should also research the usage of 'sort'. You defined a sort evaluation call, but didn't call sort to use it.