我正在尝试增加散列值,但我得到了令人困惑的输出。我将一组数组、散列和标量值传递给一个函数。
下面的代码打算首先查看它是否是哈希,如果是,则遍历值并递增它们。
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, b => 2, c => 3 };
$_++ for values %$ref;
say join ' ', sort values %$ref; # By values.
say join ' ', @$ref{ sort keys %$ref }; # By keys.
关于perl - 在散列 Perl 中增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46299218/