Perlでは、私が行うことができます。
つのフィールド(配列要素)下降し、他の(ハッシュキー)昇順で並べ替えられますが、文句をperlcritic
を引き起こし
my @unit_indices = sort {
$units{$b}[0] <=> $units{$a}[0]
or
$a cmp $b
} keys %units;
:
禁じます$ bを行X、列Yのソートブロックの$ aの前。PBPの152ページを参照してください。 (重要度:1)
Perlのベストプラクティスではなくreverse
を使用することをお勧めします。
しかし、あなたが書いた場合の動作は、はるかに分かりのようになります。
@sorted_results =逆ソート@unsorted_resultsを。
しかし、逆方向に実行されるサブゾットを持つ方法は見つかりませんでした。
明らかに、私はperlcritic
にこれを無視するように言うことができますが、私は必要なものを達成する方法を知りたいと思います。perlcritic
なぜ世界であなたは貧弱な 'perlcritic'を使用しますか?それは信じられないほどstooopeeedです。それがあなたの最初の間違いです。第二に、あなたはPBPのアドバイスを混乱させました。最初のソート機能はうまくいきますが、読みやすさを向上させるために '||'の代わりに 'または'を避けることを除いてはもちろんです。あなたの質問は、あなたが既にそれを行う正しい方法をはっきりと知っているので、間違っています。 – tchrist
コードは正常です。 perlcritic - $ aと$ bのバグのような音は、ソートのための有効なperl変数です。 $ aと$ bがそのスコープのソートブロックとループ内のブロックの外側に存在する場合にのみ警告する必要があります。複数のキーのソートが検出されないようです。 – Rich
同様の問題が報告されています。https://rt.cpan.org/Public/Bug/Display.html?id=36129 – toolic