我有一个perl哈希数组,声明如下:
my %updatevars = (datapoints => []);
Run Code Online (Sandbox Code Playgroud)
我后来试图像这样添加元素:
push($updatevars{'datapoints'}, [$updatestart+$i, $bandwidth]);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
要推送的arg 1的类型必须是dirlist.pl第61行的数组(不是哈希元素),靠近"])"
哈希(和数组)只能包含标量.这就是我们必须在其中引用数组(和哈希)的原因.$updatevars{datapoints}包含对数组的引用.因此,您需要使用
push @{ $updatevars{datapoints} }, [ $updatestart+$i, $bandwidth ];
Run Code Online (Sandbox Code Playgroud)
请注意,您的代码适用于5.14+,因为push已更改为也接受引用.(但这种变化"被认为是高度实验性的",因此您也应该在较新版本中使用上述代码.)