我在使用@_将单个参数传递给Perl子例程时遇到了一个奇怪的错误.传入子程序的值在进入子程序后立即更改.
代码示例:
my $my_def = 0;
print "my_def = $my_def \n";
@someResult = doSomething($my_def);
sub doSomething {
my $def = @_;
print "def = $def \n";
...
}
Run Code Online (Sandbox Code Playgroud)
这返回:
> my_def = 0
> def = 1 # instead of "0"
Run Code Online (Sandbox Code Playgroud)
另一个奇怪的事情是代码在几个月前正常工作.
当我将其更改为:
sub doSomething {
my $def = $_[0];
Run Code Online (Sandbox Code Playgroud)
谁能说出什么可能导致问题?使用@_传递单个参数是否有任何限制?
谢谢!