4

通常の配列参照 \@array と [@array] の違いを Perl で理解しようとしています。

次の記事http://perl-begin.org/tutorials/perl-for-newbies/part2/で説明されているように、「角括弧で囲まれた配列 ([ @array ]) は、配列への動的参照を返します。この参照は他の値に直接影響を与えないため、動的と呼ばれます。」
参照が他の値に直接影響を与えないという上記の最後の文は、私には明確ではありません。他のどの値を参照しているのでしょうか? いくつかの Web サイトが同じ説明をコピーして貼り付けています。誰かが違いを強調するより良い説明を提供できますか?

彼らが提供した例を次に示します。

use strict;
use warnings;

sub vector_sum
{
    my $v1_ref = shift;
    my $v2_ref = shift;

    my @ret;

    my @v1 = @{$v1_ref};
    my @v2 = @{$v2_ref};

    if (scalar(@v1) != scalar(@v2))
    {
        return undef;
    }
    for(my $i=0;$i<scalar(@v1);$i++)
    {
        push @ret, ($v1[$i] + $v2[$i]);
    }

    return [ @ret ];
}

my $ret = vector_sum(
    [ 5, 9, 24, 30 ],
    [ 8, 2, 10, 20 ]
);

print join(", ", @{$ret}), "\n";

ただし、上記の例で、return [ @ret ]; を変更すると、\@ret に対して、プログラムは同じ結果を返すので、これが動的参照を説明する例としてどのように役立つかわかりません。

ありがとう。

4

3 に答える 3