我看了
How can I resolve this case of “Useless use of a variable in a void context”?,它说要使用.连接这是我做的,但我仍然是警告.
在/ mysz / bin / heer第79行的void上下文中无用的私有变量.
43 sub getLog { 44 opendir(my $dh,$_[0]) || die "can't opendir $_[0]: $!"; 45 my @ooolog = grep {(/^\.oooo_log/)} readdir($dh); 46 closedir $dh; 47 return $ooolog[-1]; 48 } ... 79 $ooolog ? ($ooo = $log. "/". &getLog($log)) : $ooo; <--------- ...
不太确定如何在void上下文中修复无用的私有变量
谁知道怎么修它?
编辑:
78 $ooodata ? ($fl = $fl. "/.ooo_data") : ($fl = $fl. "/.ooo");
如果它是? :问题那为什么不在78处提出警告?
解决方法
考虑当$ooolog为假时会发生什么.你最终执行了
$ooo; # Useless
我想你是想要的
$ooo = $ooolog ? $log . "/" . &getLog($log) : $ooo;
但这样做更简单
$ooo = $log . "/" . &getLog($log) if $ooolog;
在添加的问题中,您不再收到警告,因为
$ooo; # Useless
已被取代
$fl = $fl. "/.ooo"; # Not useless
那说,
$ooodata ? ($fl = $fl. "/.ooo_data") : ($fl = $fl. "/.ooo");
写得好得多
$fl .= $ooodata ? "/.ooo_data" : "/.ooo";
如果你在一个条件运算符中有一个赋值,那么你做错了(某些东西是次优的和/或难以阅读的).