如何解决“在无效上下文中无用的变量”的情况?

例如:

  my $err = $soap_response->code, " ", $soap_response->string, "\n";
  return $err;


我收到类似“在无效上下文中无用的变量”之类的警告吗?为什么?我该如何解决?

最佳答案

如果要连接参数,请使用"."运算符或join

my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";


接下来是为什么Perl给您警告。

您正在分配一个标量变量$err,并且赋值的右侧在标量上下文中求值。

二进制“ ,”是逗号运算符。在标量上下文中,它在void上下文中评估其左参数,将其丢弃,然后在标量上下文中评估其右参数,并返回该值。

评估一个变量或一个常数并将其扔掉是没有用的。 Perl会为此警告您。

仅供参考:您的代码还有另一个可能的问题:

my $err = $soap_response->code, " ", $soap_response->string, "\n";


分配具有更高的优先级,因此:

(my $err = $soap_response->code), " ", $soap_response->string, "\n";


有关更多信息,请参见Perl operators and precedenceComma operator

08-27 14:53