如何解决“在空上下文中无用使用变量”的情况?
如何解决“在空上下文中无用使用变量”的情况?
例如:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
return $err;
我收到诸如“在 void 上下文中无用使用变量”之类的警告?为什么?我该如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想连接参数,请使用
"."
运算符或join
:接下来是 Perl 向您发出警告的原因。
您正在分配给标量变量
$err
,并且分配的右侧在标量上下文中进行计算。二进制“
,
”是逗号运算符。在标量上下文中,它在 void 上下文中计算其左参数,丢弃该值,然后在标量上下文中计算其右参数并返回该值。评估变量或常量并丢弃该值是没有用的。 Perl 会对此发出警告。
仅供参考:您的代码可能存在另一个问题:
分配具有更高的优先级,因此:
请参阅 Perl 运算符和优先级 和 逗号运算符 了解更多信息。
In case you want to concatenate the arguments, use the
"."
operator orjoin
:Next is why Perl gives you warnings.
You're assigning to a scalar variable
$err
, and the right-hand side of the assignment is evaluated in scalar context.Binary "
,
" is the comma operator. In scalar context it evaluates its left argument in void context, throws that value away, then evaluates its right argument in scalar context and returns that value.Evaluating a variable or a constant and throwing that value away is useless. And perl warns you about this.
FYI: Another possible issue with your code:
The assignment has higher precedence so that is:
See Perl operators and precedence and the Comma operator for more information.
我猜您想连接字符串片段以形成整个错误消息,因此您必须使用点而不是逗号:
I guess you wanted to concatenate the string pieces to form the entire error message, so you'll have to use the dot instead of comma:
或者,更好的 IMO:
请参阅 perldoc -f join 和 perldoc -f sprintf perldoc perlop。
关于警告,请参阅 perldoc perlop 和 关于逗号运算符的注释。
or, better IMO:
See perldoc -f join and perldoc -f sprintf perldoc perlop.
Regarding the warning, see perldoc perlop and this note on the comma operator.