这是Perl在解释中的错误吗?

new*_*erl 2 variables perl

 11 package C;
 12 $_ = 5;
 13 print "$_\n$C::_\n$::_\n";
Run Code Online (Sandbox Code Playgroud)

输出:

5

5
Run Code Online (Sandbox Code Playgroud)

我们知道$_Perl中的一个超全局变量,但为什么第一次赋值给这个变量会导致同时赋值$::_

UPDATE

package C;
$_ = 5;
print "$_\n$C::_\n$::_\n";
package main;
print "####in main::\n";
$_ = 2;
print "$_\n$::_\n";
package A;
our $_ = 1;
$_ = 4;
print "####in A::\n";
print "$_\n$::_\n$A::_\n";
print "####in B::\n";
package B;
$_ = 3;
print "| $_ | \n
        |$::_ | \n
        |$B::_\n";
Run Code Online (Sandbox Code Playgroud)

在最后print,你可以看到,$_并且$::_是不同的.

| 3 |

        |2 |

        |
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 5

$_保存在包装中main.此外,如果省略包名,main则假定包.也就是说,$::_等同于$main::_(以及$main'_).

关于你的更新:$_应该是$main::_.但之后our,$_现在正在关注$A::_.这似乎是Perl 5.8.8中的一个错误.