如何在Perl中的相同作用域中重新声明变量?

时间:2018-06-25 13:55:48

标签: perl scope warnings declaration variable-declaration

是否有一种方法可以在Perl中使用my关键字在同一范围内重新声明变量?当我运行以下脚本时:

use warnings;
use strict;

my $var = 3;
print "$var\n";

undef $var;
my $var = 4;
print "$var\n";

我得到“期望的”输出,但是也有警告"my" variable $var masks earlier declaration in same scope。有没有一种方法可以在不得到警告的情况下重新声明变量?

我不确定,但这是因为my在编译时发生,而undef在运行时发生是因为警告甚至在第一个{{1} }语句。 (我什至不确定perl在运行它之前是否真的对其进行了编译。)

上下文:我希望能够复制一段代码并将其多次粘贴到同一文件中,而不必删除所有print声明。我猜这不是最好的方法,但是任何解决该问题的方法将不胜感激。

1 个答案:

答案 0 :(得分:4)

为避免警告,您可以在大括号({...})内括上新的变量声明和使用它的代码,并创建新的作用域。

my $var = 3;
print "$var\n";

{    
    my $var = 4;
    print "$var\n";
}