我想从一个空的散列开始,然后将同类散列的散列插入到散列中。
#!/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"}类型的delete结构。
你知道该怎么做吗?
发布于 2011-02-22 17:56:09
要初始化散列,可以使用%h = ()。
{}是指向空匿名哈希的reference。试试这个:
my %h = ();
$h{"1"} = {
a => -1,
b => -1,
c => [{
d => -1,
e => -1,
}],
};发布于 2011-02-22 21:01:37
注意:引用总是标量的,因为它们包含地址(可以说是整洁地思考)
当你创建一个嵌套的数据结构时,请记住,在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 :) :)
https://stackoverflow.com/questions/5076569
复制相似问题