我想插散列引用字符串,但这种方法是行不通的。 如何一个插值$self->Test->{text}
?
# $self->Test->{text} contains "test 123 ok"
print "Value is: $self->Test->{text} \n"; # but not working
输出:
Test=HASH(0x2948498)->Test->{text}
我想插散列引用字符串,但这种方法是行不通的。 如何一个插值$self->Test->{text}
?
# $self->Test->{text} contains "test 123 ok"
print "Value is: $self->Test->{text} \n"; # but not working
输出:
Test=HASH(0x2948498)->Test->{text}
方法调用将不会插双引号里面,所以你最终的字符串化的参考,然后->Test->{text}
。
最简单的方法来做到这一点是需要的,事实的优点print
需要的参数列表:
print "Value is: ", $self->Test->{text}, "\n";
你也可以使用串联:
print "Value is: " . $self->Test->{text} . "\n";
你也可以使用经过检验而可靠printf
printf "Value is %s\n", $self->Test->{text};
或者你可以用这个愚蠢的伎俩:
print "Value is: @{ [ $self->Test->{text} ] }\n";
见https://perldoc.perl.org/perlfaq4.html#How-do-I-expand-function-calls-in-a-string%3F
对于你的榜样最匹配的形式是在我看来:
print "Value is: ${ \$self->Test->{text} } \n";
现在的问题是插值的附加价值? 它应该是更快然后拼接,而是基于http://perl.apache.org/docs/1.0/guide/performance.html#Interpolation__Concatenation_or_List的差别非常小,最快捷的方式,在这个特殊的打印情况下,是:
print "Value is: ", $self->Test->{text}, " \n";