my @output =
map $_->[0],
sort{$a->[1] <=> $b->[1]}
map [$_,-s $_],
@array;
Run Code Online (Sandbox Code Playgroud)
有人可以更详细地解释代码吗?我不能得到它的头或尾..
yst*_*sth 10
从下往上阅读:
@array
Run Code Online (Sandbox Code Playgroud)
一个数组(文件名,以后使用).
map [$_,-s $_],
Run Code Online (Sandbox Code Playgroud)
对于每个文件名,获取对两元素匿名数组的引用,第一个元素是文件名,第二个元素是文件的字节大小.map返回这些数组引用的列表.
sort{$a->[1] <=> $b->[1]}
Run Code Online (Sandbox Code Playgroud)
通过增加文件大小对数组引用列表进行排序.
map $_->[0],
Run Code Online (Sandbox Code Playgroud)
将数组引用列表转回到文件名列表中,但现在按排序顺序.
my @output =
Run Code Online (Sandbox Code Playgroud)
将列表保存在@output中.
这相当于:
my @output = sort { -s $a <=> -s $b } @array;
Run Code Online (Sandbox Code Playgroud)
但只能获得每个文件的大小一次,而不是按排序进行每次比较一次.
| 归档时间: |
|
| 查看次数: |
1522 次 |
| 最近记录: |