- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于 Perl 常量使用起来有些奇怪,我决定将我的“类变量”实现为我们的
变量,就像:
our $foo = '...';
但是,当我使用类变量添加 UNITCHECK
block 时,我意识到变量尚未设置,因此我将代码更改为:
BEGIN {
our $foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
然后我意识到我在 UNITCHECK
中输入了一些变量名称,因此我决定添加 use warnings
和 use strict
。不幸的是我遇到了新的错误,例如
Variable "$foo" is not imported at .. line ..
当我在 BEGIN
之外初始化变量时,错误就消失了,但随后又回到了原来的问题。
所以我想知道:our $var = 'value';
是推荐且正确的使用方式,还是应该将其拆分在 BEGIN
之外的 our $var;
中并BEGIN
内的 $var = 'value;
?
由于我的变量列表相当长,我试图避免将它们列出两次(引入再次拼写错误的可能性)。
推荐的正确方法是什么?
最佳答案
our
具有词法作用域,因此在您的代码中,变量仅存在于 BEGIN
block 中。您需要将声明与赋值分开,如下所示:
our $foo;
BEGIN {
$foo = '...';
}
UNITCHECK {
if ($foo eq 'bla') {
#...
}
}
关于perl - 如何将 `our` 类变量与 `UNITCHECK` 正确地与 `use strict` 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71796059/
由于 Perl 常量使用起来有些奇怪,我决定将我的“类变量”实现为我们的变量,就像: our $foo = '...'; 但是,当我使用类变量添加 UNITCHECK block 时,我意识到变量尚未
由于 Perl 常量使用起来有些奇怪,我决定将我的“类变量”实现为我们的变量,就像: our $foo = '...'; 但是,当我使用类变量添加 UNITCHECK block 时,我意识到变量尚未
我知道他们都在做什么,但从来没有发现自己处于需要他们中的任何一个的境地。我用过BEGIN多次阻止和END偶尔。 BEGIN当您需要在代码运行之前调整环境时特别有用,我使用了 END在某些调试情况下捕获
我是一名优秀的程序员,十分优秀!