プロが教えるわが家の防犯対策術!

お世話になります。mooTaihenです。

Perlで配列のソートが出来なくて困っております。
お忙しいところ、誠に申し訳けありませんが、ご教示をお願い致します。

【内容】
 サンプルソースに示した様なデータ構成をソートしたいのですが、思惑通りに行きません。
 期待しているソート結果は、
a1
b3
b4
c2
 です。

 <サンプルソース>
my @data;

$data[0]{name} = "b";
$data[0]{cnt} = 4;

$data[1]{name} = "c";
$data[1]{cnt} = 2;

$data[2]{name} = "b";
$data[2]{cnt} = 3;

$data[3]{name} = "a";
$data[3]{cnt} = 1;

@data2 = sort {chg($a,$b)} @data;
foreach (@data2) {
print $_->{name} . $_->{cnt} . "\n";
}

sub chg
{
my(@s,@d)=@_;
return $s[0]{name} cmp $d[0]{name} and $s[0]{cnt} <=> $d[0]{cnt};
}

 <出力結果>
a1
b3
c2
b4

A 回答 (1件)

こんちは


sub chg以降を変更してみてください...

sub chg
{
my($s,$d)=@_;
return ($s->{name} cmp $d->{name} or $s->{cnt} <=> $d->{cnt});
}
    • good
    • 0
この回答へのお礼

ありがとうございました。

ご指摘頂いた内容で実施したところ、思いの通りになりました。

重ねて、お礼申し上げます。

お礼日時:2006/05/23 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!