文字列のソート

データをカンマや空白で区切って並べたものをリストと言います。
パラメータリストで与えた文字列データを、昇順(降順)にソートして表示します。

プログラムの説明

  1. エディタで sort2.pl を作成して下さい。
    print sort("う","い","お","あ","え");
    print "\n";
    print sort {$a cmp $b} ("banana ","orange ","strawberry ","apple ","grape ");
    print "\n";
    print sort {$b cmp $a} ("banana ","orange ","strawberry ","apple ","grape ");
    print "\n";
    print reverse(sort {$a cmp $b} ("banana\n","orange\n","strawberry\n","apple\n","grape\n"));
    
  2. 【実行画面】
    C:\DATA\Perl>perl sort2.pl
    あいうえお
    apple banana grape orange strawberry
    strawberry orange grape banana apple
    strawberry
    orange
    grape
    banana
    apple
    
  3. 五個の文字列を昇順に並び替えて表示します。
    print sort("う","い","お","あ","え");
  4. {$a cmp $b} で比較の方法を指定します。
    $a が前で $b が後なので昇順に並べられます。
    数値のとき(<=>)とは比較記号が異なることに注目して下さい。
    比較演算子は Perl とは? を参照して下さい。
    print sort {$a cmp $b} ("banana ","orange ","strawberry ","apple ","grape ");
  5. こんどは降順に表示してみましょう。
    前が $b 後が $a になっていることに注目して下さい。
    print sort {$b cmp $a} ("banana ","orange ","strawberry ","apple ","grape ");
  6. 昇順にソートしてひっくり返して表示しても降順になります。
    reverse はリストを逆順にする関数です。
    print reverse(sort {$a cmp $b} ("banana\n","orange\n","strawberry\n","apple\n","grape\n"));

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(Perl)