【问题标题】:Merging inner hashes in Perl在 Perl 中合并内部哈希
【发布时间】:2010-10-28 20:25:23
【问题描述】:

我有 3 维散列和 2 维散列,我想将 2 维散列与 3 维散列的一个内部散列合并,类似这样,这类似于我合并一对二维哈希:

my %3dhash;
my %2dhash;
my $key = "some string";
%3dhash{$key} = ($3dhash{$key}, %2dhash);

但是当我尝试它时它不起作用。我该怎么办?

【问题讨论】:

    标签: perl hash perl-data-structures


    【解决方案1】:

    尝试以下方法:

    my %hash3d;
    my %hash2d;
    ....
    my $key = "some string";
    $hash3d{$key} = { %{ $hash3d{$key} }, %hash2d };
    

    Perl 中的变量不能以数字开头,所以我重命名了变量。现有散列周围的%{ ... } 将其扩展为列表。此列表与来自 %hash2d 的列表展开。该列表周围的{ ... } 是匿名哈希引用构造函数,它创建一个新的哈希引用,然后将其存储在$hash3d{$key}

    【讨论】:

    • 谢谢!我是从内存中输入代码的,这就是所有语法错误的原因。不过你的解决方案奏效了。
    • 变量也可以以数字开头——$0 $1 $2 … $9 呢? ;-)
    • @ephemient,这些是内置的特殊变量。您不能创建以数字开头的新变量。
    • 好吧,如果你有充分的理由以数字开头,%{"3dhash"} 是合法的 ...
    • @mobrule => 空格、数字、标点符号,如果你引用它,它们都是公平的游戏。希望我们没有给任何人坏主意:)
    猜你喜欢
    • 2014-04-16
    • 2011-08-03
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2021-11-28
    相关资源
    最近更新 更多