Perlについての質問箱 23箱目
■ このスレッドは過去ログ倉庫に格納されています
0498デフォルトの名無しさん
2006/04/04(火) 11:44:10演算子のオーバーロードしたくて以下のスクリプトを書いたんですが…
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が呼ばれてないみたい
なんですけど、何が間違ってるんでしょうか。
■ このスレッドは過去ログ倉庫に格納されています