我有这样的文件数组,如下所示:
my @html_pages_files = ("html.17", "html.9", "html.0", "html.10");
我会在排序部分之后放置文件的扩展名。基本上文件名是/html.\d/。问题是我正在尝试使用map和sort函数对其进行排序:
map { $_->[1] }
sort { $a->[0] <=> $b->[0] }
map { /html\.(.*)/; [$1, $_] }
@html_pages_files;
print "@html_pages_files\n";
但输出仍与原始数组相同。我一步一步跟着@Chas。欧文斯在这里回答:Using Perl, how can I sort an array using the value of a number inside each array element?。请注意,我对perl很新,所以我没有得到所有细节。
有人出错的地方吗? 谢谢!!!
答案 0 :(得分:6)
您永远不会保存已排序的结果!
@html_pages_files =
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { /html\.(.*)/; [$_, $1] }
@html_pages_files;
(为了保持一致性,我总是将整个字符串放在数组的第一个元素中。)
答案 1 :(得分:4)
您的排序逻辑看起来是正确的,但您没有将操作的结果分配给任何内容,因此您不会更改@html_pages_files
。尝试
@html_pages_files = map {$_->[1] }
sort {$a->[0] <=> $b->[0]}
map {/html\.(.*)/; [$1, $_]} @html_pages_files;