Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何按字母顺序获取目录中的第一个文件?_Perl - Fatal编程技术网

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

Perl 如何按字母顺序获取目录中的第一个文件?,perl,Perl,我想执行$filename=`ls*.gz|head-n1`通过perl,但我认为管道导致了错误执行被中止。 这将是perl脚本的一部分,而不是通过-e运行 正确的方法是什么?怎么样 my $filename = (sort glob "*.gz")[0]; 您声明字母调用顺序,因此默认情况下使用“标准字符串比较顺序”。请注意,ls可以是别名,而其默认值也可能取决于系统 只有当您使用ls的某些特定功能时,使用shell才有意义,这需要在Perl中进行大量工作。仅仅为了分类,没有理由退出你的程

我想执行
$filename=`ls*.gz|head-n1`通过perl,但我认为管道导致了错误<由于编译错误,-e的代码>执行被中止。

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

正确的方法是什么?

怎么样

my $filename = (sort glob "*.gz")[0];
您声明字母调用顺序,因此默认情况下使用“标准字符串比较顺序”。请注意,
ls
可以是别名,而其默认值也可能取决于系统

只有当您使用
ls
的某些特定功能时,使用shell才有意义,这需要在Perl中进行大量工作。仅仅为了分类,没有理由退出你的程序。它的效率要低得多,并且增加了一系列需要解决的新问题


他提出了一个很好的观点。由于调用,
排序块|子列表
,人们可能想知道上述内容是否会以一种非预期的方式被视为子。它不是,因为内置的十六进制首先运行。然而,这有点接近,这只是更清楚

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

如果您没有将其作为一个单行程序运行,那么执行-e…错误从何而来?请显示完整的代码。我正在通过
perl-e
进行测试,但我将代码作为脚本的一部分。