DevCN
菜单
全部文章快讯开发深度热点

Perl 入门:用数组和哈希统计标签出现次数

通过数组遍历和哈希累计建立标签频次,理解标量访问形式与默认值处理,并按键排序输出。


本节目标

通过数组遍历和哈希累计建立标签频次,理解标量访问形式与默认值处理,并按键排序输出。

环境与运行方法

使用 Perl 5,保存为 lesson.pl,执行 perl -c lesson.pl 后运行 perl lesson.pl。启用 strict 和 warnings,及时发现名称或未定义值问题。

核心思路

@tags 表示数组,%counts 表示哈希,访问单个元素时使用标量形式。定义或运算符为未定义的计数提供零,随后递增。

完整示例

use strict;
use warnings;
my @tags = ("perl", "text", "perl");
my %counts;
for my $tag (@tags) {
    $counts{$tag} = ($counts{$tag} // 0) + 1;
}
for my $tag (sort keys %counts) {
    print "$tag=$counts{$tag}\n";
}

预期输出

perl=2
text=1

逐步理解

my 声明词法变量,strict 可以发现未声明名称。// 只对未定义值给默认结果,与所有假值都算缺失的逻辑不同。排序键之后输出可以避开哈希遍历顺序的不确定性。

这里统计出现次数,因此重复标签会重复累计。如果统计标签涉及任务数,需要在每个任务内部去重,再累计任务贡献。全局只去重一次会让每个标签最多计一,回答的是另一种问题。

常见问题与边界

  • 单个哈希元素使用标量形式。
  • 不要依赖哈希原始遍历顺序。
  • warnings 不应被简单关闭来掩盖问题。

动手练习

追加两个 text,观察计数和顺序。

参考答案

perl 仍为 2,text 变为 3。输出依然按标签名排序,不会因为 text 次数更多自动排在前面;排序策略需要独立说明。

DISCUSSION

文章回复

0 条公开回复
未登录回复需要审核后公开
还没有回复,欢迎参与讨论。