Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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,我的变量设置有问题。除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}\'