Perl拆分字符串
我得到的结果是:Perl拆分字符串,perl,Perl,我得到的结果是: #!/usr/bin/perl $command="lscpu | grep -i Architecture"; #$arch = system($command); @SplitArch = split(/:/, system($command)); print @SplitArch[1]; 我希望唯一能展示的是: Architecture: x86_64 这和你想象的不一样。运行命令并返回其退出状态;因此,在您的情况下,这: x86_64 打印体系结
#!/usr/bin/perl
$command="lscpu | grep -i Architecture";
#$arch = system($command);
@SplitArch = split(/:/, system($command));
print @SplitArch[1];
我希望唯一能展示的是:
Architecture: x86_64
这和你想象的不一样。运行命令并返回其退出状态;因此,在您的情况下,这:
x86_64
打印体系结构:x86_64
,因此:
system($command)
打印体系结构:x86_64
并将@SplitArch
设置为(0)
print@SplitArch[1]
然后什么也不打印,因为@SplitArch
只有一个元素。(顺便说一句,你可能想写$SplitArch[1]
,而不是@SplitArch[1]
,但这既不在这里也不在那里。)
由于您显然打算捕获$command
的输出,请改用:
这和你想象的不一样。运行命令并返回其退出状态;因此,在您的情况下,这:
x86_64
打印体系结构:x86_64
,因此:
system($command)
打印体系结构:x86_64
并将@SplitArch
设置为(0)
print@SplitArch[1]
然后什么也不打印,因为@SplitArch
只有一个元素。(顺便说一句,你可能想写$SplitArch[1]
,而不是@SplitArch[1]
,但这既不在这里也不在那里。)
由于您显然打算捕获$command
的输出,请改用:
如果要获取命令的输出,应使用
qx{}
运算符:
@SplitArch = split(/:/, `$command`);
要打印数组索引#1处的值,应使用标量值所需的$
符号:
my @SplitArch = split /:/ qx{$command};
如果要获取命令的输出,应使用
qx{}
运算符:
@SplitArch = split(/:/, `$command`);
要打印数组索引#1处的值,应使用标量值所需的$
符号:
my @SplitArch = split /:/ qx{$command};
我相信系统的返回值是命令的退出值,而不是输出 你或许应该:
print $SplitArch[1], "\n";
希望这有帮助。我相信系统的返回值是命令的退出值,而不是输出值 你或许应该:
print $SplitArch[1], "\n";
希望这有帮助。已经给出的解释-
系统不会返回您认为它会返回的结果-我只是提供一个替代解决方案
$output = `$command`;
@SplitArch = split(/:/, $output);
open(我的$LSCPU,'-|','LSCPU')或die$!;
而(){
咀嚼;
my($key,$val)=拆分(/:\s*/,$\u2);
if($key eq‘架构’){
打印“$val\n”;
最后;
}
}
关闭($LSCPU);
优点:
- 尽快离开
- 不涉及外壳
- 除了shell之外,还少了一个外部程序
- 更精确地匹配所需线条
已经给出了解释-系统
不会返回您认为的结果-我只是提供了一个替代解决方案
$output = `$command`;
@SplitArch = split(/:/, $output);
open(我的$LSCPU,'-|','LSCPU')或die$!;
而(){
咀嚼;
my($key,$val)=拆分(/:\s*/,$\u2);
if($key eq‘架构’){
打印“$val\n”;
最后;
}
}
关闭($LSCPU);
优点:
- 尽快离开
- 不涉及外壳
- 除了shell之外,还少了一个外部程序
- 更精确地匹配所需线条
在split语句之后,放入此print语句以帮助找出发生了什么…print“\n\t--$\uu”foreach(@SplitArch)
将溢出控制台中数组的内容,使代码无法正常工作的原因显而易见。在split语句之后,放入此print语句以帮助确定发生了什么…print“\n\t--$\u”foreach(@SplitArch)
将溢出控制台中数组的内容,从而清楚地说明代码无法工作的原因。