LoginSignup
8
6

More than 5 years have passed since last update.

Perlのsort関数まとめ

Last updated at Posted at 2015-08-21

Perlのsort関数を逆引き式でまとめてみます

辞書順の昇順

sort @LIST; または sort {$a cmp $b} @LIST;

文字列

my @data = qw(b a ab aa bc bb B A AB BA);

print "Case1: ", join(", ", sort @data), "\n";
print "Case2: ", join(", ", sort {$a cmp $b} @data), "\n";

実行結果

Case1: A, AB, B, BA, a, aa, ab, b, bb, bc
Case2: A, AB, B, BA, a, aa, ab, b, bb, bc

大文字、小文字は区別される。

数列

my @nums = qw(100 2 1 10 11 12);

print "Case3: ", join(", ", sort @nums), "\n";
print "Case4: ", join(", ", sort {$a cmp $b} @nums), "\n";

実行結果

Case3: 1, 10, 100, 11, 12, 2
Case4: 1, 10, 100, 11, 12, 2

辞書順の昇順(大文字、小文字を区別しない)

sort {fc($a) cmp fc($b)} @LIST;

文字列

my @data = qw(b a ab aa bc bb B A AB BA);
print "Case5: ", join(", ", sort {fc($a) cmp fc($b)} @data), "\n";

実行結果

Case5: a, A, aa, ab, AB, b, B, BA, bb, bc

大文字、小文字は区別されない。

辞書順の降順

sort {$b cmp $a} @LIST;

辞書順の昇順を参考にしてください。

辞書順の降順(大文字、小文字を区別しない)

sort {fc($b) cmp fc($a)} @LIST;

辞書順の昇順(大文字、小文字を区別しない)を参考にしてください。

数値の昇順

sort {$a <=> $b} @LIST;

文字列

my @data = qw(b a ab aa bc bb B A AB BA);
print "Case6: ", join(", ", sort {$a <=> $b} @data), "\n";

実行結果

Case6: b, a, ab, aa, bc, bb, B, A, AB, BA

比較できないため変わらない。

数列

my @nums = qw(100 2 1 10 11 12);
print "Case7: ", join(", ", sort {$a <=> $b} @nums), "\n";

実行結果

Case7: 1, 2, 10, 11, 12, 100

数値の降順

sort {$b <=> $a} @LIST;

数値の昇順を参考にしてください。

8
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6