うーん、このへんがPerlのわかりにくいところ?
関数に引数を引き渡すとき、ふつうは引数を,で区切りますが、区切らないケースもある様です。sortで比較用メソッドを使うときとか、ファイルハンドルにprintするときとか。
sortなんか、,があってもとりあえず関数は通る(ただし、実際にはソートされず、先頭に空要素が挿入される?)ようなので、やっかいです。それがわかれば、{$a->{'category'} cmp $b->{'category'};}
みたいな感じでOKなんですが。
慣れでしょうが、やっかいな言語だなあ…。まあ、こういうのもPerlの利点の一つだと思いますけどね。
まあ、苦戦の結果、もう少しで形にはなりそうです。