如何在 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";
}
有没有办法在 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";
}