如何将cut命令中的值存储到Perl数组中?

如何将cut命令中的值存储到Perl数组中?,perl,Perl,而不是在数组中存储单个字段。它将整个输出作为字符串存储在第一个元素中 这是我得到的输出 my @up = `cat abc.txt|head -2|tail -1|cut -d' ' -f1-3`; 我想要这个 $up[0] = 'xxx 12 234' |您可以按空格分割结果: @up = ('xxx', 12, 234) 或者,您可以将输入记录分隔符设置为空格。但是,这一行没有那么灵活,它只是一个简单的字符串,所以如果一行中有两个空格,它会将其视为中间的空字段: my @up = sp

而不是在数组中存储单个字段。它将整个输出作为字符串存储在第一个元素中

这是我得到的输出

my @up = `cat abc.txt|head -2|tail -1|cut -d' ' -f1-3`;
我想要这个

$up[0] = 'xxx 12 234'

|

您可以按空格分割结果:

@up = ('xxx', 12, 234)
或者,您可以将输入记录分隔符设置为空格。但是,这一行没有那么灵活,它只是一个简单的字符串,所以如果一行中有两个空格,它会将其视为中间的空字段:

my @up = split(/\s+/, `cat abc.txt ...`);

看起来您需要文件第二行的前三个空格分隔的字段
abc.txt

问题是反勾号将在数组的每个元素中返回一行输出,并且由于
cut
将所有三个字段打印在一行上,因此它们显示为单个数组元素

您可以在Perl中再次使用该值,但是当您拥有整个Perl语言时,使用shell来完成如此简单的事情是浪费的,您应该使用Perl来完成所有事情

这个程序将按照你的要求执行。我使用此选项只是为了验证
@up
的内容是否符合您的要求

local $/ = " ";
my @up = `cat abc.txt ...`;
use strict;
use warnings 'all';

use Data::Dump;

my @up = do {
    open my $fh, '<', 'abc.txt' or die $!;
    <$fh>;  # Skip one line
    (split ' ', <$fh>)[0 .. 2];
};

dd \@up;
["xxx", 12, 234]