循环变量以检查是否已定义

时间:2014-03-19 02:33:53

标签: perl

我试图检查一堆变量以确保它们已被定义。我以为我会把变量名放在一个数组中并循环遍历数组,检查是否定义了每个变量。但是,我最好能理解它,对词法变量(由“我的”定义)使用符号引用不起作用。

在Perl中是否有办法检查是否定义了大量词法变量而无需手动将每个变量名称放入定义的语句中?如果我可以创建一个数组或其他东西来保存我想要检查其定义状态的变量的名称似乎会更好。

2 个答案:

答案 0 :(得分:2)

还将ref放入数组中的var。

my @vars = (
   [ '$x', \$x ],
   [ '$y', \$y ],
   [ '$z', \$z ],
);

for (@vars) {
   my ($name, $ref) = @$_;
   print("$name is undefined\n") if !defined($$ref);
}

我不知道在包含变量时包含名称会有多么困难。另一种方法是让PadWalker扫描内部。我不会在生产中使用它,但它在调试工具中很有用。

答案 1 :(得分:0)

听起来您需要重新考虑代码的结构。拥有大量像这样的词汇变量表明设计不好 - 它们是否应该不在哈希或数组中?然后他们可以更简单地迭代。