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