使用带有qx运算符的Data :: Printer

时间:2015-11-06 10:30:54

标签: perl

我正在试验Data::Printer模块,它工作正常,直到 我尝试使用qx运算符打印系统调用的返回值:

use strict;
use warnings;
use Data::Printer;

p qx/echo -n Hello/;

这给了我以下错误:

Type of arg 1 to Data::Printer::p must be one of [@$%&] (not scalar)

我认为发生此错误是因为qx未被识别为标量,散列,数组或函数。所以我试过了:

p my $temp = qx/echo -n Hello/;

它工作正常。问题是,是否可以避免使用$temp变量? (我认为这种语法会变得很烦人,从长远来看会记住)

1 个答案:

答案 0 :(得分:1)

Data::DumperData::Dump不同,默认模式Data::Printer允许您只显示变量的内容,而不是任意表达式

当必须通过引用显式传递数组和哈希时,可以通过禁用use_prototypes语句中的use选项来规避此行为

use Data::Printer use_prototypes => 0, output => 'stdout';

p qx/echo -n Hello/;

输出

"Hello"