http://qs321.pair.com?node_id=642024


in reply to Re: sort hash of array by value
in thread how to sort hash of array by value

Responding to my own post.

First rule:

use warnings;
use strict;

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.

I think you can see where this is going. Anonymous arrays are constructed within brackets.

As mentioned before, the quotes around clearly numeric values are unnecessary.

Next, for some reason, your example has:

$colorhash{$colorname}$i

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.