关于变量范围的一个非常简单的问题。我在主代码中定义了一个我在while循环中使用的变量。
my $my_variable;
while(<FILE>) {
...using $my_variable
}
if ($my_variable) -> FAILS
当我退出循环并使用变量时,我收到错误:
Use of uninitialized value $my_variable
即使我将变量包含在裸块中,我也会跟上错误。
{
my $my_variable;
while(<FILE>) {
...using $my_variable
}
if ($my_variable) -> FAILS
}
有什么建议吗?
答案 0 :(得分:1)
你有没有分配到$my_variable
?您展示的只是一个声明(my
)和一个用法(if
),但绝不是作业。
答案 1 :(得分:1)
您是在循环中使用$my_variable
还是在循环中的某个位置将其重新定义为my $my_variable
。你很惊讶my
容易进入变量赋值。
我甚至在我的代码中经常打勾,我写的是
my $hash{ $key } = ... some elaborate assignment;
此外,if
不应该抱怨未初始化的变量。 undef
=&gt;布尔值false。
use strict; use warnings
),以便在您不期望它们时,变量不会被初始化。答案 2 :(得分:0)
在给出的示例中,您没有初始化$my_variable
因此在while循环之后未定义。
你可以在循环之前做my $my_variable = '';
。