http://qs1969.pair.com?node_id=281108

wizard341 has asked for the wisdom of the Perl Monks concerning the following question:

Im trying to sort a hash (largest first,then down to smallest) into an array based on some criteria ive specified. I am unable to determine if my sorting method is wrong or if the way im working with it is wrong, so i figure i better ask someone else.
```%reversed = reverse %hash;
@sorted = sort {sorter(\$a, \$b)} keys %reversed;

foreach \$key(@sorted)
{

print \$key;

print
\$co->a
(
{-href => "/References/\$reversed{\$key}"},\$reversed{\$key}
),
\$co->p;

}
thats pretty much how i call the subroutine and what i am doing with it
```sub sorter
{
\$a = shift;
\$b = shift;

if(\$hashYear{\$a} < \$hashYear{\$b})
{
return \$a;
}
elsif(\$hashYear{\$a} == \$hashYear{\$b})
{
if(\$hashMonth{\$a} < \$hashMonth{\$b})
{
return \$a;
}
elsif(\$hashMonth{\$a} == \$hashMonth{\$b})
{
if(\$hashDay{\$a} < \$hashDay{\$b})
{
return \$a;
}
}
}
else
{
#b is greater than a (or, in a rare case the are completly equal)
return \$b;
}

}