我正在尝试增加哈希值,但我的输出混乱。我将一个数组,散列和标量值数组传递给函数。
下面的代码打算首先看看它是否是一个哈希值,如果是这样的话,就会查看它们并递增它们。
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方面不是很有经验。
答案 0 :(得分:7)
在Perl中没有订购哈希。如果要对值进行排序,请对它们进行排序:
#! /usr/bin/perl
use warnings;
use strict;
use feature qw{ say };
my $ref = { a => 1, b => 2, c => 3 };
$_++ for values %$ref;
say join ' ', sort values %$ref; # By values.
say join ' ', @$ref{ sort keys %$ref }; # By keys.