严格使用;Perl wrt$a和$b中的行为未按预期工作

严格使用;Perl wrt$a和$b中的行为未按预期工作,perl,Perl,我已经编写了一个示例perl代码: use strict; use warnings; $a=1; $b=2; if($b==2) { $a=3; } print $a; 理想情况下,当我运行这段代码时,它应该给出一个错误,因为“全局符号”$a“需要显式的包名…” 但它没有给出任何错误。它的输出为“3”。 为什么会这样?据我所知,如果我们使用strict,那么我们需要定义变量的范围,否则它会给出一个错误。 我的理解有误吗?$a和$b是特殊变量,因此在与严格的一起使用时不会出现错误 从

我已经编写了一个示例perl代码:

use strict;
use warnings;
$a=1;
$b=2;
if($b==2) {
    $a=3;
}
print $a;
理想情况下,当我运行这段代码时,它应该给出一个错误,因为“全局符号”$a“需要显式的包名…” 但它没有给出任何错误。它的输出为“3”。 为什么会这样?据我所知,如果我们使用strict,那么我们需要定义变量的范围,否则它会给出一个错误。
我的理解有误吗?

$a
$b
是特殊变量,因此在与
严格的
一起使用时不会出现错误

由于sort()的特殊用途,变量$a和$b不受此检查的约束


所选答案解释了为什么
strict
杂注不适用于
$a
$b
。像这样的语法检查器可以提醒您不要在普通函数中使用
$A
$b