如何按字母顺序获取目录中的第一个文件?

时间:2016-10-05 20:05:43

标签: perl

我想通过perl执行$filename = `ls *.gz | head -n 1`;,但我认为管道导致错误。 Execution of -e aborted due to compilation errors.

这将是perl脚本的一部分,而不是通过-e运行。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

怎么样

my $filename = (sort glob "*.gz")[0];

陈述按字母顺序排列sort,默认情况下使用" 标准字符串比较顺序"。请注意,ls可以是别名,而其默认值也可能取决于系统。

只有在使用ls的某些特定优势时,才能使用shell,这在Perl中需要做很多工作。仅仅排序,没有理由退出你的计划。效率低得多,并且需要解决一系列新问题。

mob提出了一个很好的观点。由于sort调用sort BLOCK|SUB LIST,人们可能想知道上面的glob是否可能以非预期的方式被视为SUB。事实并非如此,因为内置运动首先出现。然而,这有点接近,这只是更清楚

my ($filename) = sort (glob "*.gz");