2016-12-17 6 views
-2

では正常に動作していない私はソート機能perlの

4 
1 7 8 100 

間違っている

1 100 7 8 

だった私が得た出力と入力を与えた

$number = <>;      # get the number of numbers 
$values = <STDIN>;     # accept number separated by spaces 

@num = split(" ", $values); # split the number separated by spaces 
@num = sort @num; 

for ($i = 0; $i < $number; $i++) { 
    print $num[$i], "\n"; 
} 

Perlプログラムを書いた

+0

この質問は、3番目の文章の[p3rl.org/sort](http://p3rl.org/sort)の文書で回答されています... – Matthias

+2

かなり古いリソースを使用してPerlを学習しているようです。すべてのプログラムの先頭には常に 'use strict'と' use warnings'があり、 'my'で変数を宣言するべきです。チュートリアル、書籍、その他[タグwiki](http://stackoverflow.com/tags/perl/info)でコンパイルしたリソースのリストを見てください。質の高いリソースから学ぶことで、人生が楽になります。 Perlと楽しんでください。 :) – simbabque

答えて

3
@num=sort { $a <=> $b } @num; 

あなたが望むものを生み出します。関連するドキュメントのページを見て:http://perldoc.perl.org/functions/sort.html

あなたが望むようSUBNAMEやBLOCKを省略するとそれは

ので、並べ替えしない、標準の文字列比較順序でソートします。

文書に従って!

+0

$ aと$ bは何ですか? – kapil

+1

$ aと$ bは免除グローバル変数です。彼らは、Perlが宣言されずに(どこでも)使用できるようにするという点で免除されています。それらはsort関数によって設定されます。 docsページを参照してください。いくつかの例があります(たとえば、独自のスタンドアロンの「明示的な」ソート関数を宣言するなど)。 – varnie

+1

@kapilの '@ num 'の中にある各値のペアに対して、一度に2つが比較されます。 '$ a'は2つのうち左のもので、' $ b'は正しいものです。 – simbabque

関連する問題