unj*_*nj2 5 perl hash perl-data-structures
# I have a hash
my %my_hash;
# I have an array
@my_array = ["aa" , "bbb"];
# I store the array in my hash
$my_hash{"Kunjan"} = @my_array;
# But I can't print my array's element
print $my_hash{"Kunjan"}[0];
Run Code Online (Sandbox Code Playgroud)
我是Perl的新手.请帮我.
Ada*_*ire 14
您的数组语法不正确.您正在创建匿名列表引用,并且@my_array是包含该引用的单元素列表.
您可以正确使用引用,作为标量:
$my_array = ["aa" , "bbb"];
$my_hash{"Kunjan"} = $my_array;
Run Code Online (Sandbox Code Playgroud)
或者您可以将列表作为列表使用,只有在将其放入哈希时才创建引用:
@my_array = ("aa" , "bbb");
$my_hash{"Kunjan"} = \@my_array;
Run Code Online (Sandbox Code Playgroud)
Eth*_*her 10
如果您只将它放在脚本的顶部:
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
...你会得到一些错误信息表明错误:
Global symbol "@my_array" requires explicit package name at kunjan-array.pl line 8.
Global symbol "@my_array" requires explicit package name at kunjan-array.pl line 11.
Run Code Online (Sandbox Code Playgroud)
所以,首先声明数组my @my_array;,然后你会得到:
Can't use string ("1") as an ARRAY ref while "strict refs" in use at kunjan-array.pl line 14.
Run Code Online (Sandbox Code Playgroud)
$my_hash{"Kunjan"}->[0]- 再次查看perldoc perlref以了解如何取消引用hashref您的程序中有一些错误:
my @my_array = ("aa" , "bbb");
$my_hash{"Kunjan"} = \@my_array;
print $my_hash{"Kunjan"}[0];
Run Code Online (Sandbox Code Playgroud)
我做了三个改变:
my前面@my_array[...]将(...)第一行的改为\在第二行@my_array前面添加一个