使用范围运算符分配给3D数组的切片

old*_*haa 4 arrays perl slice

我有一个三维数组.我想设置它的三个元素:

$array[$x][$y][0 .. 2] = (0, 1, 2);
Run Code Online (Sandbox Code Playgroud)

但是perl告诉我:

在void上下文中无用的常量(1)

在数组上下文中:

@array[$x][$y][0 .. 2] = (0, 1, 2);
Run Code Online (Sandbox Code Playgroud)

但是perl告诉我:

"]附近的语法错误

可能意味着它希望我给它两个索引然后分配给第三个维度作为一个单独的数组?但是,在此页面上,Example: Assignment Using Array Slices它表示可以使用范围运算符分配给切片,其中它表示:

@array1[1..3] = @array2[23..25];
Run Code Online (Sandbox Code Playgroud)

如何分配这样的数组切片,还是必须单独分配每个索引?

cho*_*oba 6

你需要取消引用内部数组:

@{ $arr[$x][$y] }[ 0 .. 2 ] = (0, 1, 2);
Run Code Online (Sandbox Code Playgroud)