0

次のようなファイルの配列があります。

my @html_pages_files = ("html.17", "html.9", "html.0", "html.10");

ソート部分の後にファイルの拡張子をつけます。基本的にファイル名は/html.\d/となります。問題は、マップとソート機能を使用してソートしようとしていることです:

map { $_->[1] }
  sort { $a->[0] <=> $b->[0] }
     map { /html\.(.*)/; [$1, $_] }
        @html_pages_files;
print "@html_pages_files\n";

ただし、出力は元の配列と同じままです。私は一歩一歩@Chasに従いました。Owens の回答: Perl を使用して、各配列要素内の数値の値を使用して配列を並べ替えるにはどうすればよいですか? . 私はperlにかなり慣れていないので、詳細をすべて把握していないことに注意してください。

エラーが発生した場所に誰かがシードしていますか? ありがとうございました!!!

4

2 に答える 2

6

ソートされた結果を保存することはありません!

@html_pages_files =
   map { $_->[0] }
    sort { $a->[1] <=> $b->[1] }
     map { /html\.(.*)/; [$_, $1] }
      @html_pages_files;

(一貫性を保つために、私は常に文字列全体を配列の最初の要素に入れています。)

于 2013-03-07T17:02:36.833 に答える
4

並べ替えロジックは正しいように見えますが、操作の結果を何にも割り当てていないため、を変更していません@html_pages_files。試す

@html_pages_files = map {$_->[1] } 
                    sort {$a->[0] <=> $b->[0]} 
                    map {/html\.(.*)/; [$1, $_]} @html_pages_files;
于 2013-03-07T16:59:47.470 に答える