增加散列Perl中的值

我正在尝试增加哈希值,但我的输出混乱.我将一个数组,散列和标量值数组传递给函数.

下面的代码打算首先看看它是否是一个哈希值,如果是这样的话,它会通过值并递增它们.

elsif (ref($_) eq "HASH"){

        foreach $s (values %{$_}){
            $s++;
        }
    }

我正在传递以下哈希:

{ a => 1,b => 2,c => 3  },{ d => 4,e => 5 },

然而,当我打印或返回$s时,我会得到不同的输出,例如:

4 2 3 5 6

要么

2 4 3 6 5

或其他一些随机变化.我想要的是,显然,

2 3 4 5 6

我确信这很简单,但我在Perl方面不是很有经验.

解决方法

散列不是在Perl中订购的.如果要对值进行排序,请对它们进行排序:

#! /usr/bin/perl
use warnings;
use strict;
use feature qw{ say };

my $ref = { a => 1,c => 3 };

$_++ for values %$ref;
say join ' ',sort values %$ref;        # By values.
say join ' ',@$ref{ sort keys %$ref }; # By keys.

相关文章

忍不住在 PerlChina 邮件列表中盘点了一下 Perl 里的 Web 应用框架(巧的是 PerlBuzz 最近也有一篇相关...
bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的...
gb2312转Utf的方法: use Encode; my $str = "中文"; $str_cnsoftware = encode("utf-8...
  perl 计算硬盘利用率, 以%来查看硬盘资源是否存在IO消耗cpu资源情况; 部份代码参考了iostat源码;...
1 简单变量 Perl 的 Hello World 是怎么写的呢?请看下面的程序: #!/usr/bin/perl print "Hello W...
本文介绍Perl的Perl的简单语法,包括基本输入输出、分支循环控制结构、函数、常用系统调用和文件操作,...