小编mor*_*gen的帖子

在Perl子例程中使用@_时获取错误的参数值

我在使用@_将单个参数传递给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)

谁能说出什么可能导致问题?使用@_传递单个参数是否有任何限制?

谢谢!

perl arguments subroutine

3
推荐指数
1
解决办法
536
查看次数

标签 统计

arguments ×1

perl ×1

subroutine ×1