由于 Perl 常量使用起來有些奇怪,我決定將我的“類變數”實作為our變數,就像:
our $foo = '...';
但是,當我UNITCHECK使用類變數添加塊時,我意識到尚未設定變數,因此我將代碼更改為:
BEGIN {
our $foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
然后我意識到我在 中打錯了一些變數名UNITCHECK,所以我決定添加use warningsand use strict。不幸的是,我遇到了新的錯誤,例如
變數“$foo”未在 .. 行 .. 處匯入
當我在外面初始化變數時BEGIN,錯誤就消失了,但后來我又遇到了原來的問題。
所以我想知道:是推薦和正確使用,還是our $var = 'value';應該our $var;內外分開?BEGIN$var = 'value;BEGIN
由于我的變數串列相當長,我試圖避免將它們列出兩次(引入再次拼寫錯誤的可能性)。
推薦的正確方法是什么?
uj5u.com熱心網友回復:
our是詞法范圍的,因此在您的代碼中,變數僅存在于BEGIN塊中。您需要將宣告與賦值分開,如下所示:
our $foo;
BEGIN {
$foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/460312.html
