perl评论家违反政策在检查字符串中的子字符串索引时


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确定了代码中的一个错误,使用它!

相关内容

  • 没有找到相关文章

最新更新