以前のリビジョンの文書です


A PCRE internal error occured. This might be caused by a faulty plugin

====== 数値の値でソートする - Perl ====== ~~socialite~~ //※この記事は2006年10月02日に書かれたものです。// 以下のようなコードを書くと、文字列として扱われてしまい、意図した結果にならない場合がある。 <code perl> @array = ( 1, 2, 3, 4, 5, 10, 11, 12 ); foreach(sort @array){ print ; print "\n" } <code> この実行結果は以下になる。 <code> 1 10 11 12 2 3 4 5 </code> これを回避するコードは次のようなものである。 ===== サンプル ===== <code perl> @array = ( 1, 2, 3, 4, 5, 10, 11, 12 ); #-- 昇順 --# foreach(sort {$a <=> $b} @array){ print ; print "\n" } #-- 降順 --# foreach(sort {$b <=> $a} @array){ print ; print "\n" } </code> ===== 実行結果 ===== <code> 1 2 3 4 5 10 11 12 12 11 10 5 4 3 2 1 </code> 昇順と降順は、$a,$bの位置を変更するだけである。 ちなみに、$a, $bは my などをつけなくても、Perl上ですでに定義されているため、use strictした環境でもエラーにはならない。 なお、文字列して比較したい場合には <=>をcmpに置き換える。 <code perl> use strict; my @array = ( 1, 2, 3, 4, 5, 10, 11, 12 ); foreach(sort {$a cmp $b} @array){ print ; print "\n" } print "\n"; foreach(sort {$b cmp $a} @array){ print ; print "\n" } </code> <code> 1 10 11 12 2 3 4 5 5 4 3 2 12 11 10 1 </code> ===== 関連書籍 ===== {{amazon>jp:4873113148}} <html><p style="clear:both"></p></html> {{amazon>jp:4798139815}} <html><p style="clear:both"></p></html> {{tag>CGI・Perl例文集 Perl 配列 リスト ソート sort}} ~~socialite~~

コメント

コメントを入力. Wiki文法が有効です:
P Q O H L