@_ を使用して単一の引数を 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"
もう 1 つの奇妙な点は、コードが数か月前までは正しく機能していたことです。
次のように変更すると、問題は解決しました。
sub doSomething {
my $def = $_[0];
誰が問題の原因を教えてもらえますか? @_ を使用して単一の引数を渡すことに制限はありますか?
ありがとう!