我正在试验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
变量? (我认为这种语法会变得很烦人,从长远来看会记住)
答案 0 :(得分:1)
与Data::Dumper
和Data::Dump
不同,默认模式Data::Printer
允许您只显示变量的内容,而不是任意表达式
当必须通过引用显式传递数组和哈希时,可以通过禁用use_prototypes
语句中的use
选项来规避此行为
use Data::Printer use_prototypes => 0, output => 'stdout';
p qx/echo -n Hello/;
"Hello"