如何在 perl 中的相同范围内重新声明变量?

How to re-declare a variable in the same scope in perl?

有没有办法在 perl 中使用 my 关键字在同一范围内重新声明一个变量?当我运行以下脚本时:

use warnings;
use strict;

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

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

我得到 "desired" 输出,但也有一个警告 "my" variable $var masks earlier declaration in same scope。有没有办法在不收到警告的情况下重新声明变量?

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

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

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

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

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