首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在散列中插入散列的散列?

如何在散列中插入散列的散列?
EN

Stack Overflow用户
提问于 2011-02-22 17:51:31
回答 2查看 1.4K关注 0票数 3

我想从一个空的散列开始,然后将同类散列的散列插入到散列中。

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use warnings;

my %h = {};

$h{"1"} => {
    a => -1,
    b => -1,
    c => [
    {
        d => -1,
        e => -1,
    },
    ],
};

然而,这给了我们

代码语言:javascript
复制
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结构。

你知道该怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 17:56:09

要初始化散列,可以使用%h = ()

{}是指向空匿名哈希的reference。试试这个:

代码语言:javascript
复制
my %h = ();

$h{"1"} = {
    a => -1,
    b => -1,
    c => [{
        d => -1,
        e => -1,
    }],
};
票数 9
EN

Stack Overflow用户

发布于 2011-02-22 21:01:37

注意:引用总是标量的,因为它们包含地址(可以说是整洁地思考)

当你创建一个嵌套的数据结构时,请记住,在perl中,我们不必担心空间是如何分配的,以及分配了多少空间。它可以很好地处理自己的匿名存储。

但是,永远记住创建这样的存储的经验法则,

要创建匿名数组,请使用方括号而不是圆括号:

代码语言:javascript
复制
$ra = [ ];

要创建匿名哈希,请使用大括号而不是方括号:

代码语言:javascript
复制
$rh = { };

这就是全部。

现在,你写的是这样的,

代码语言:javascript
复制
my %h={};

您实际上是在创建一个散列,并使用一个标量引用对其进行初始化。

这就是你的程序对此抱怨的原因,

只需删除该行并像这样重写代码,

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use warnings;

my $h={"1" => {
            a => -1,
            b => -1,
            c => [
                 {
                   d => -1,
                   e => -1,
                 },
                 ],
              }
};

Perl会处理剩下的事情..享受Perl :) :)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5076569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档