2
爲什麼未初始化變量的行爲/互動不同於一個初始化的變量在這種情況下:與我們並開始塊相互作用聲明的變量
use strict;
use warnings;
our($foo) = 0;
BEGIN {
$foo = 2;
}
our($bar);
BEGIN {
$bar = 3;
}
print "FOO: <$foo>\n";
print "BAR: <$bar>\n";
結果:
$ perl test.pl
FOO: <0>
BAR: <3>
Perl版本:
$ perl -v
This is perl 5, version 22, subversion 0 (v5.22.0) built for x86_64-linux
初始化和簡單賦值之間的區別是幫助我理解這一點的關鍵,而不是僅僅知道它 - 謝謝。 –
'我們'有一個初始化器是沒有意義的,因爲'我們的$ foo'爲同名的包變量創建了一個詞法範圍的別名(就像'\ my $ foo = \ $ PACKAGE: :foo;'確實)。也就是說,這只是「我的」的任務。 (爲什麼你首先使用'our' ???) – ikegami
我需要一個打包範圍的變量。 –