Perl"不是ARRAY引用"错误

eve*_*ve 3 perl hash

如果有人可以告诉我我的错误,我会很高兴的:

my %mymap; 
@mymap{"balloon"} = {1,2,3};

print $mymap{"balloon"}[0] . "\n";
Run Code Online (Sandbox Code Playgroud)

Axe*_*man 6

$mymap{'balloon'}哈希而不是数组.表达式{1,2,3}创建一个哈希:

 {
   '1' => 2,
   '3' => undef
 }
Run Code Online (Sandbox Code Playgroud)

你分配到一个切片%mymap对应列表键:('balloon').由于键列表是1项,值列表是一个项目,所以你做了同样的事情

$mymap{'balloon'} = { 1 => 2, 3 => undef };
Run Code Online (Sandbox Code Playgroud)

如果你已经使用过strict,warnings它会让你知道你的错误.我有:

Scalar value @mymap{"balloon"} better written as $mymap{"balloon"} at - line 3. Odd number of elements in anonymous hash at - line 3.


Mic*_*elB 5

如果您使用过 'use strict; 使用警告;' 在您的代码顶部,您可能有更好的错误消息。

您正在做的是创建一个名为mymap的哈希。散列将数据存储为键 => 值对。然后,您将数组引用分配给键ball。你剪下的小代码有两个问题:1.你没有解决 mymap 哈希,2.如果你想传递一个列表,你应该使用方括号:

my %mymap;
$mymap{"balloon"} = [1,2,3];
print $mymap{"balloon"}[0] . "\n";
Run Code Online (Sandbox Code Playgroud)

这会打印“1”。

你也可以只使用一个数组:

my @balloon = (1,2,3);
print $balloon[0] . "\n";
Run Code Online (Sandbox Code Playgroud)