私は Perl を初めて使用するので、これを理解できません。2 つの一見同一のコード セットがありますが、1 つのサブルーチンが値を更新し、別のサブルーチンは値を更新しません。最初のコード セットでは、配列への参照が渡され、その参照が指している値が更新されると理解しています。その後、サブルーチンを終了すると、値が変更されています。ただし、2番目のものでは、同じことが起こると予想されます。配列は更新されますが、サブルーチンを終了すると忘れてしまいます。2 番目のコード セットの舞台裏で何が起こっているのか説明してもらえますか?
最初のコード セット:
#!/usr/bin/perl -w
use strict;
{
my @array = (1, 2, 3);
removeSecondElement(\@array);
print @array; #output: 13
print("\n");
}
sub removeSecondElement{
my ($arrayReference) = @_;
splice(@$arrayReference, 1, 1);
print @$arrayReference; #output: 13
print "\n";
}
2 番目のコード セット:
#!/usr/bin/perl -w
use strict;
{
my @array = (1, 2, 3);
removeSecondElement(\@array);
print @array; #output: 123
print("\n");
}
sub removeSecondElement{
my ($arrayReference) = @_;
my @array = @$arrayReference;
splice(@array, 1, 1);
print @array; #output: 13
print "\n";
}