for my $item (@array) {
if (index($item, '$n') != -1) {
print "HELLOn";
}
}
问题是:Perl评论家给出以下政策违反。
字符串可能需要在第168行,附近'$ item,'$ n''。(严重性:1(
请建议我如何解决此问题?
在这种情况下,分析仪在标记您的代码时发现了一个错误,要么是错误的。
您是在$item
中寻找字面的" $ n ",还是$n
变量评估为?
-
如果您想找到文字 $ n 字符,那么您的代码没有错
-
如果您期望
$item
包含$n
变量中存储的值,则可以对其进行评估,if (index($item, $n) != -1)
如果确实如此,但是
$n
也可能包含其他逃脱的序列或编码,您需要作为字面角色(以抑制其评估(,那么您可能需要做更多的事情,取决于确切的内容该变量。
,如果您确实需要找到字符$
,然后是n
(可以解释在变量周围将单个引号的故意行为(,您需要处理警告。
有关违反的特定策略,请参见Perl :: Critic :: Policy :: valition and expressions
此策略会警告您,如果您使用单Quotes或Q//的字符串,该字符串具有无用的Metacharacters,可能需要插值。
要满足您需要使用双引号并逃脱$
的策略,例如qq($n)
。我认为,这会将精美的原始代码细分变成奇怪的事物。
如果您最终想简单地使警告静止,请参见文档,弯曲规则
评论。工具 perlcritic很有用,但您必须正确使用它。可以这么说,这是一个静态代码分析仪,它不知道您的程序在做什么。它可以捕捉不良的做法,但不能告诉您如何编写程序。它的许多"政策"不适合特定代码。
它基于的书在介绍中很好地说明了这一切。明智地使用。
当我查看一个问题时,似乎您正在寻找与之匹配的子字符串的索引,因此您需要$n
变量的内容,而不是字面的" $ n "。然后perlcritic
确定了代码中的一个错误,使用它!