【问题标题】:How to pass an array as value to a single key in a hash of perl?如何将数组作为值传递给 perl 哈希中的单个键?
【发布时间】:2014-11-26 16:40:19
【问题描述】:
my %hash;
my @chain;
foreach (my $i=0; $i<=7; $i++)
{
    foreach (my $j=0; $j<=($#output); $j++)
    {
        if ($output[$j] =~ /chain1/)
        {
            push (@array, $output[$j]);
        }   
    }

    $hash{$chain[$i]} = [ @array ]; 
}

print "$hash{$chain[0]}\n";

问题是我无法将数组分配给哈希中的唯一键。当我说打印所有键时打印相同的输出。

【问题讨论】:

  • foreach 用于元素,您使用它就像for
  • 没关系,forforeach 完全可以互换。 (但它看起来确实很奇怪。)
  • 回复“但它确实看起来很奇怪”,是的。如果我想要一个计数循环,我会使用for my $i (0..7),但这里最好使用for my $chain (@chains)for my $output (@outputs)

标签: arrays perl hash key-value


【解决方案1】:

你不断添加到同一个数组中。

for (...) {
{
    my @array;                      <-- Add here

    for (...) {
        ...
        push @array, $output[$j];
        ...
    }

    $hash{$chain[$i]} = \@array;    <-- No need to copy elements anymore.
}

【讨论】:

    【解决方案2】:

    Perl 哈希被设计为只保存标量值。它可以有一个键,值可以是数组的地址引用(标量)。但是如果需要修改数组值,则将数组的内容连接为带有一定分隔符的字符串,并将字符串存储为键。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 2010-12-21
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2011-02-01
      • 2011-09-06
      • 1970-01-01
      相关资源
      最近更新 更多