我想从空哈希开始,然后在哈希中插入相同类型哈希的哈希值。
#!/usr/bin/perl
use strict;
use warnings;
my %h = {};
$h{"1"} => {
a => -1,
b => -1,
c => [
{
d => -1,
e => -1,
},
],
};
然而,这给出了
Useless use of hash element in void context at ./hash.pl line 8.
Useless use of anonymous hash ({}) in void context at ./hash.pl line 8.
Reference found where even-sized list expected at ./hash.pl line 6.
这是我想要制作的数据库,我可以在其中插入$h{"1"}
类的删除结构。
任何想法如何做到这一点?
答案 0 :(得分:9)
要初始化您使用%h = ()
的哈希值
{}
是空匿名哈希的reference。试试这个:
my %h = ();
$h{"1"} = {
a => -1,
b => -1,
c => [{
d => -1,
e => -1,
}],
};
答案 1 :(得分:3)
注意:引用总是标量,因为它们包含地址(整齐地思考的那种)
当你创建一个嵌套的数据结构时,请记住在perl中我们不必担心如何分配空间,分配多少空间。处理它自己的匿名存储非常简洁。
但是,请务必记住创建此类存储的拇指规则,
要创建匿名数组,请使用方括号而不是括号:
$ra = [ ];
要创建匿名哈希,请使用大括号而不是方括号:
$rh = { };
这就是全部。
现在,你写的是这样的,
my %h={};
您实际上是在创建一个哈希并使用一个标量初始化它。
这就是为什么你的程序抱怨这个,
只需删除该行并重写您的代码,
#!/usr/bin/perl
use strict;
use warnings;
my $h={"1" => {
a => -1,
b => -1,
c => [
{
d => -1,
e => -1,
},
],
}
};
Perl会照顾其余的.. 享受Perl :):)