如何在Perl中为未使用的变量生成警告?
如何在Perl中为未使用的变量生成警告如何在Perl中为未使用的变量生成警告?,perl,variables,warnings,unused-variables,Perl,Variables,Warnings,Unused Variables,如何在Perl中为未使用的变量生成警告 my $var1 = 0; my $var2 = 10; printf("%d",$var2); 应生成$var1未使用的警告 编辑 我在脚本上尝试了perlcritic。它给出了以下几个警告: 这些都是什么意思?我没有看到任何未使用的变量警告 #Bareword file handle opened at line 98, column 9. See pages 202,204 of PBP. (Severity: 5) #Loop iterato
my $var1 = 0;
my $var2 = 10;
printf("%d",$var2);
应生成$var1
未使用的警告
编辑
我在脚本上尝试了perlcritic
。它给出了以下几个警告:
这些都是什么意思?我没有看到任何未使用的变量警告
#Bareword file handle opened at line 98, column 9. See pages 202,204 of PBP. (Severity: 5)
#Loop iterator is not lexical at line 1068, column 5. See page 108 of PBP. (Severity: 5)
#Subroutine prototypes used at line 553, column 1. See page 194 of PBP. (Severity: 5)
#Two-argument "open" used at line 1072, column 5. See page 207 of PBP. (Severity: 5)
您应该看看perl模块,它就是为此而设计的
您也可以像amon在评论中所说的那样使用
perlcritic
。关于使用perlcritic
检测此问题:
我曲解了规则。它在这里不适用,因为该规则的当前实现将分配视为一种用途
也就是说,它在my$unused上发出警告代码>但不在my$unused=1上代码>
要使用perlcritic
,您可以请求一个严重性,范围从默认的“温和”-5
到“野蛮”-1
有关警告的简要说明:
- 裸字文件句柄被认为是过时的。使用词汇变量,如
打开我的$fh代码>和我的$line=
- 在
foreach
样式的循环中使用默认的$\ucode>作为循环变量可能被认为是一种不好的做法。通常最好引入一个新的词汇变量,其作用域限于循环,如
for my $pet (@pets) {
$pet->feed($pet->favourite_treat);
}
- 子程序原型是子定义之后的paren中的东西,如
sub foo(){…}
。除非您已经知道原型在Perl中的作用,否则不要使用它们,只需sub-foo{…}
- 执行
打开
之类的操作被认为是一种良好的做法
open my $fh, "<", $filename or die "Can't open $filename: $!";
打开我的$fh,“你已经知道Perl静态分析工具perlcritic了吗?你可以将它配置为发出这样的警告。我不知道。我会尝试这些。我误解了perlcritic提供的可能性,并对此发表了一篇综合评论作为“答案”。它还简要地解释了上面显示的perlcritic警告。