调试Perl变量插值
我的变量设置有问题。除调试Perl变量插值,perl,Perl,我的变量设置有问题。除awk命令外,此命令的一部分正在工作。在这种情况下是否使用了$2 use strict; use warnings; my $cmd = qx(df -h | awk '{print $2}'); print "Output:$cmd\n"; $2由perl计算为一个变量。你需要逃避它: my $cmd = qx(df -h | awk '{print \$2}'); 更新: 您可能希望退房。使用perl本机解决方案通常比尝试使用系统调用和解析输入
awk
命令外,此命令的一部分正在工作。在这种情况下是否使用了$2
use strict;
use warnings;
my $cmd = qx(df -h | awk '{print $2}');
print "Output:$cmd\n";
$2
由perl计算为一个变量。你需要逃避它:
my $cmd = qx(df -h | awk '{print \$2}');
更新:
您可能希望退房。使用perl本机解决方案通常比尝试使用系统调用和解析输入要好。
$2
由perl评估为一个变量。你需要逃避它:
my $cmd = qx(df -h | awk '{print \$2}');
更新:
您可能希望退房。使用perl本机解决方案通常比尝试使用系统调用和解析输入要好。运行该解决方案时会得到什么,您希望得到什么?@Igor使用该代码,他应该在串联(.)或字符串中使用未初始化值$2。。是的,我在这方面有点慢。我在你3分钟后回答了,但我的答案和你的完全一样,所以我删除了我的答案。当你运行它时,你会得到什么,你希望得到什么?@Igor使用该代码,他应该在串联(.)或字符串中使用未初始化值$2。是的,我在这方面有点慢。我在你3分钟后回答,但我的答案与你的完全相同,所以我删除了我的答案。一般来说,你可以使用“作为分隔符”使qx(或m、s或qr)不插值,但在这种情况下,你必须将引号转义到awk的arg:
qx'df-h | awk\{print$2}'
一般来说,你可以制作qx(或m、s或qr)通过使用“作为分隔符,可以不进行插值,但是在这种情况下,您必须将引号转义到awk的arg:qx'df-h | awk\'{print$2}\'