在perl中映射和排序文件数组

use*_*958 0 sorting perl map

我有这样的文件数组,如下所示:

my @html_pages_files = ("html.17", "html.9", "html.0", "html.10");
Run Code Online (Sandbox Code Playgroud)

我将把文件的扩展名放在排序部分之后.基本上文件名是/html.\d/.问题是我正在尝试使用map和sort函数对其进行排序:

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

但是输出保持与原始数组相同.我一步一步跟着@Chas.Owens在这里回答:使用Perl,如何使用每个数组元素中的数字值对数组进行排序?.请注意,我对perl很新,所以我没有得到所有细节.

有人在哪里播种错误吗?谢谢!!!

ike*_*ami 6

你永远不会保存排序结果!

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

(为了保持一致性,我总是将整个字符串放在数组的第一个元素中.)