Maybe when replying to somebody who already says is new to perl, it would be nice to actually test your code.
Problems:
1) don't pass $a and $b to a sort sub, since they are special variables
2) don't treat a hash like a hashref, it just won't work
3) you don't need the return either
This does work:
use strict;
use warnings;
my %month_sort =
( 'JAN' => 1, 'FEB' => 2, 'MAR' => 3,
'APR' => 4, 'MAY' => 5, 'JUN' => 6,
'JUL' => 7, 'AUG' => 8, 'SEP' => 9,
'OCT' => 10, 'NOV' => 11, 'DEC' => 12
);
sub sort_cmp {
( substr($a, 3, 2) cmp substr($b, 3, 2) )
||
( $month_sort{substr($a, 0, 3)} <=>
$month_sort{substr($b, 0, 3)}
);
}
my (@months) = qw(APR12 MAR13 APR11 MAR12 FEB13 APR13);
@months = ( sort sort_cmp @months);
print "@months \n";
|