Perl:如何在新哈希中声明空数组引用?

Vol*_*Rig 6 arrays perl hash warnings reference

我有严格的警告,但它一直在抱怨下一行的初始化:

$hash{$key} = ($row, [], [], [], '');
Run Code Online (Sandbox Code Playgroud)

它警告这一行:

"Useless use of private variable in void context"

"Useless use of anonymous list ([]) in void context" (3 times)
Run Code Online (Sandbox Code Playgroud)

我将在稍后填充数据,但我希望索引1,2,3是数组引用,索引4是字符串.我正在访问并填充数据,如下所示:

$hash{$key}->[1]->[3] = 'Data';
$hash{$key}->[4] = $hash{$key}->[4] . 'More Data';
Run Code Online (Sandbox Code Playgroud)

显然,我做错了什么,但我不确定如何做对.(另外,我知道最后一行是多余的,这可以用更好的方式总结吗?)

Eri*_*rom 12

哈希的元素只能是标量,因此您必须更改分配以使用匿名数组构造函数而不是parens:

$hash{$key} = [$row, [], [], [], ''];
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅perldsc.

这条线:

$hash{$key}->[4] = $hash{$key}->[4] . 'More Data';
Run Code Online (Sandbox Code Playgroud)

可写:

$hash{$key}->[4] .= 'More Data';
Run Code Online (Sandbox Code Playgroud)

最后,除非你喜欢它们,否则->字符在下标分隔符之间是隐含的,所以$hash{$key}->[1]->[3]意味着同样的事情$hash{$key}[1][3]