質問です。
演算子のオーバーロードしたくて以下のスクリプトを書いたんですが…
package Num;
use overload {
    'cmp' => \&compare
};
sub new {
    my $classname = shift;
    my $t = {};
    $t->{'value'} = shift;
    bless $t, $classname;
}
sub compare {
    my ($x, $y)=@_;
    $x->{'value'} <=> $y->{'value'}
}

package main;

my @l = (new Num(1), new Num(4), new Num(2), new Num(3));

foreach (sort {$a cmp $b} @l) {
    print $_->{'value'}, ', ';
}
エラーはでないですがソートできません。比較するサブルーチンの内容に問題
がありそうな気はしてるんですが、そもそもNum::compareが呼ばれてないみたい
なんですけど、何が間違ってるんでしょうか。