配列スライスは複数の値を返し、@
印章があります。
my @array = (1, 2, 3, 4);
print join " ", @array[1..2]; # "2 3"
my $aref = [1, 2, 3, 4];
print join " ", @{$aref}[1..3]; # "2 3 4"
スライスはスカラーのリスト(!=配列)を返します。ただし、これ自体はコピーではありません。
my @array = (1, 2, 3, 4);
for (@array[1..2]) {
s/\d/_/; # change the element of the array slice
}
print "@array"; # "1 _ _ 4"
したがって、これは非常に効率的です。
新しい配列(または配列参照)を作成する場合は、値をコピーする必要があります。
my @array = (1, 2, 3, 4);
my @slice = @array[1..2];
my $slice = [ @array[1..2] ];
構文\@array[1..2]
は、スライス内の各要素への参照のリストを返しますが、スライスへの参照は返しません。