是否有一种方法可以在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
声明。我猜这不是最好的方法,但是任何解决该问题的方法将不胜感激。
答案 0 :(得分:4)
为避免警告,您可以在大括号({...}
)内括上新的变量声明和使用它的代码,并创建新的作用域。
my $var = 3;
print "$var\n";
{
my $var = 4;
print "$var\n";
}