【问题标题】:Why does my first hash value disappear in Perl?为什么我的第一个哈希值在 Perl 中消失了?
【发布时间】:2015-06-02 03:45:07
【问题描述】:

为什么当我打印输出时哈希会删除第一个值apple:2

use warnings;
use strict;
use Data::Dumper;

my @array = ("apple:2", "pie:4", "cake:2");
my %wordcount;
our $curword;
our $curnum;
foreach (@array) {
    ($curword, $curnum) = split(":",$_);
    $wordcount{$curnum}=$curword;
}
print Dumper (\%wordcount);

【问题讨论】:

    标签: arrays perl hash


    【解决方案1】:

    Perl hash 只能有唯一的键,所以

    $wordcount{2} = "apple";
    

    后来被

    覆盖
    $wordcount{2} = "cake";
    

    【讨论】:

      【解决方案2】:

      你可能想做的是:

      use warnings;
      use strict;
      
      use Data::Dumper;
      
      my @array = ("apple:2", "pie:4", "cake:2");
      my %wordcount;
      for my $entry (@array) {
          my ($word, $num) = split /:/, $entry;
          push @{$wordcount{$num}}, $word;
      }
      
      print Dumper (\%wordcount);
      

      这样,%wordcount 中的每个条目都将字数与出现多次的单词数组相关联(假设符号中的 :n 表示计数)。

      初学者可以,但不能假设别人能读懂你的想法。

      另外,当词法范围 (my) 可以使用时,不要使用全局变量 (our)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-03
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多