本文へスキップ
BecomeCoder

Perlコース · 第4章 配列 · レッスン14

sort / reverse / join / split ― 並べ替えと変換

ブラウザで完結

導入

配列を並べ替える sort、逆順にする reverse文字列と配列を行き来する join / split。テキスト処理でとにかくよく使う4つです。

説明

sort は既定では文字列順に並べます。数値順にしたいときは sort { $a <=> $b } と比較ブロックを付けます($a$b が比べる2要素、<=> は数値比較の演算子)。

use strict;
use warnings;

my @nums = (10, 2, 33, 4);

my @by_str = sort @nums;                # 文字列順: 10 2 33 4
my @by_num = sort { $a <=> $b } @nums;  # 数値順: 2 4 10 33

print "@by_str\n";
print "@by_num\n";
print join(",", reverse @by_num), "\n"; # 33,10,4,2

join(区切り, リスト) はリストを1つの文字列につなぎ、split /区切り/, 文字列 は文字列を配列に分解します。

use strict;
use warnings;

my $csv = "apple,banana,cherry";
my @items = split /,/, $csv;        # カンマで分解
print "2つ目: $items[1]\n";          # banana

my $joined = join(" / ", @items);
print "$joined\n";                   # apple / banana / cherry

やってみよう

sort に比較ブロックを付けたり外したりして、文字列順と数値順の違いを確かめましょう。split の区切りを変えてみてください。

演習

my @n = (5, 3, 9, 1, 7);数値順に並べ替え、join(",", ...) でカンマ区切りにして表示してください(結果は 1,3,5,7,9)。

ヒント1を見る

my @sorted = sort { $a <=> $b } @n; のあと print join(",", @sorted), "\n";

実際に動かしてみよう

下のエディタにPerlを書いて「実行」を押すと、学習用シミュレータが print / say の出力を表示します(本物のperlではなく、教材の範囲を再現した軽量なエンジンです)。スカラ/配列/ハッシュ・制御構文・サブルーチン・正規表現(=~ / s///)なども動きます。本文の例を書き換えて動かしてみましょう(ファイル入出力・リファレンス・CPANモジュールなど一部の機能は対象外です)。

Perl — ブラウザ内で実行(学習用シミュレータ)

Perlの教材サブセットを動かす学習用シミュレータを読み込みます(本物のperlではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。