循环时无法访问变量(在perl中)

时间:2011-03-22 12:14:00

标签: perl

关于变量范围的一个非常简单的问题。我在主代码中定义了一个我在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
}

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

你有没有分配到$my_variable?您展示的只是一个声明(my)和一个用法(if),但绝不是作业。

答案 1 :(得分:1)

  • 您是在循环中使用$my_variable还是在循环中的某个位置将其重新定义为my $my_variable。你很惊讶my容易进入变量赋值。

    我甚至在我的代码中经常打勾,我写的是

     my $hash{ $key } = ... some elaborate assignment;
    
  • 此外,if不应该抱怨未初始化的变量。 undef =&gt;布尔值false。

  • 我不担心初始化我的所有变量 - 但重要的是你要学习如何使用undefs的心态。并且总是始终 USUW(use strict; use warnings),以便在您不期望它们时,变量不会被初始化。

答案 2 :(得分:0)

在给出的示例中,您没有初始化$my_variable因此在while循环之后未定义。

你可以在循环之前做my $my_variable = '';