U. *_*ndl 2 variables perl strict
由于 Perl 常量使用起来有些奇怪,我决定将我的“类变量”实现为our变量,就像:
our $foo = '...';
Run Code Online (Sandbox Code Playgroud)
但是,当我UNITCHECK使用类变量添加块时,我意识到变量尚未设置,因此我将代码更改为:
BEGIN {
our $foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
Run Code Online (Sandbox Code Playgroud)
然后我意识到我在 中输入了一些变量名称UNITCHECK,所以我决定添加use warnings和use strict。不幸的是我遇到了新的错误,比如
变量“$foo”未在 .. 行导入。
当我初始化外部变量时BEGIN,错误就消失了,但随后又回到了原来的问题。
所以我想知道:是our $var = 'value';推荐的正确使用,还是应该分为our $var;外部BEGIN和$var = 'value;内部BEGIN?
由于我的变量列表相当长,我试图避免将它们列出两次(引入再次拼写错误的可能性)。
推荐的正确方法是什么?
our是词法范围的,因此在您的代码中变量仅存在于BEGIN块中。您需要将声明与赋值分开,如下所示:
our $foo;
BEGIN {
$foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
Run Code Online (Sandbox Code Playgroud)