You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl哈希最值获取与错误解决:统计哈希值出现次数

Perl哈希最值获取与值出现次数统计

一、解决最值获取的错误

你的错误源于对哈希取值的理解偏差:@{$countPat{$pat4C}}试图将哈希中单个键对应的数值(比如17)当作数组引用解引用,但这个值是普通数字,并非数组引用,因此触发了strict refs模式下的错误。

正确获取哈希所有值的最值,需要先通过values %哈希名拿到所有值的列表,再结合List::Util模块的min/max函数计算:

use List::Util qw(min max);

# 示例哈希
my %countPat = (
    'ABCD' => 2,
    'EFGH' => 7,
    'IJKL' => 17,
    'MNOP' => 2,
    'OPMN' => 300,
    'QRST' => 300,
    'DEAC' => 300
);

# 获取最值
my $minAssigned = min(values %countPat);
my $maxAssigned = max(values %countPat);

print "min = $minAssigned, max = $maxAssigned\n";

二、统计每个值的出现次数

可以用第二个哈希来记录原哈希值的出现频次:遍历原哈希的所有值,将值作为新哈希的键,每遇到一次就对应值加1:

my %value_counts;
foreach my $val (values %countPat) {
    $value_counts{$val}++;
}

# 按数值排序输出统计结果
foreach my $val (sort { $a <=> $b } keys %value_counts) {
    print "值 $val 出现 $value_counts{$val} 次\n";
}

执行后会输出:

值 2 出现 2 次
值 7 出现 1 次
值 17 出现 1 次
值 300 出现 3 次

内容的提问来源于stack exchange,提问作者Callie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:55:04