gpt4 book ai didi

perl - 如何将 `our` 类变量与 `UNITCHECK` 正确地与 `use strict` 一起使用?

转载 作者:行者123 更新时间:2023-12-02 01:39:48 25 4
gpt4 key购买 nike

由于 Perl 常量使用起来有些奇怪,我决定将我的“类变量”实现为我们的变量,就像:

our $foo = '...';

但是,当我使用类变量添加 UNITCHECK block 时,我意识到变量尚未设置,因此我将代码更改为:

BEGIN {
our $foo = '...';
}

UNITCHECK {
if ($foo eq 'bla') {
#...
}
}

然后我意识到我在 UNITCHECK 中输入了一些变量名称,因此我决定添加 use warningsuse 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com