在Perl中,如果您在聲明子例程後試圖用my
從詞法上聲明變量,則此子例程將看不到此變量。然而,子程序聲明後,變量將看到變量:在定義子程序之後定義詞法變量
sub lol {
if (@arr) {
print "defined\n";
} else {
print "not defined\n";
}
}
my @arr = (1,2,3);
sub lol2 {
if (@arr) {
print "defined\n";
} else {
print "not defined\n";
}
}
lol; #prints "not defined"
lol2; #prints "defined"
但是,如果您設置一個變量未聲明的(@arr = (1,2,3);
)或our
聲明變量,子程序都將看到變量。
它是一個錯誤或功能?
這個部分你的問題:「然而,如果你聲明,如果你設置值爲變量沒有宣佈「很難理解。 – asjo 2014-12-06 16:25:53
@asjo哦,沒有注意到,對不起,剛剛更正 – Vantuz 2014-12-06 16:27:41
很酷,現在更容易理解。如果你「嚴格使用;使用警告;」你必須在使用它們之前聲明所有的變量,這將更容易避免錯誤。它按預期工作。 – asjo 2014-12-06 16:30:21