如果有人可以告诉我我的错误,我会很高兴的:
my %mymap;
@mymap{"balloon"} = {1,2,3};
print $mymap{"balloon"}[0] . "\n";
Run Code Online (Sandbox Code Playgroud)
$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.
如果您使用过 '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)