gpt4 book ai didi

Perl系统+拆分+数组

转载 作者:行者123 更新时间:2023-12-02 06:39:02 27 4
gpt4 key购买 nike

我叫 luis,住在 arg。我有一个问题,无法解决。

**IN BASH**
pwd
/home/labs-perl
ls
file1.pl file2.pl

**IN PERL**
my $ls = exec("ls");
my @lsarray = split(/\s+/, $ls);
print "$lsarray[1]\n"; #how this, i need the solution. >> file.pl
file1.pl file2.pl # but this is see in shell.

最佳答案

您看到的输出不是来自 print 语句,它是 ls 的控制台输出。要将 ls 输出到变量中,请使用反引号:

my $ls = `ls`;
my @lsarray = split(/\s+/, $ls);
print "$lsarray[1]\n";

这是因为exec没有返回,后面的语句没有执行。来自 perldoc :

The exec function executes a system command and never returns; use system instead of exec if you want it to return. It fails and returns false only if the command does not exist and it is executed directly instead of via your system's command shell

但是使用 system 命令不会帮助你,因为它不允许输出捕获,因此,反引号。但是,使用 glob 函数会更好:

my @arr = glob("*");
print $arr[1], "\n";

此外,perl 数组索引从 0 开始,而不是 1。要获取 file1.pl,您应该使用 print "$lsarray[0]\n"

关于Perl系统+拆分+数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com