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

Perl技术求助:基于文件内容构建含数组值的哈希表

Perl脚本实现:从非结构化时间线文件构建哈希表

以下是实现需求的完整Perl脚本,代码简洁易懂,适合新手参考:

#!/usr/bin/perl
use strict;
use warnings;

# 初始化存储事件与月份的哈希表
my %timetable;

# 打开目标文件(替换成你的实际文件路径)
open my $fh, '<', 'timeline.txt' or die "无法打开文件: $!";

while (my $line = <$fh>) {
    chomp $line;  # 移除行末换行符
    next if $line =~ /^\s*$/;  # 跳过空行

    # 按斜杠分割字符串,提取关键字段
    my @parts = split /\//, $line;
    # 跳过格式不符合预期的行,避免报错
    next unless @parts == 3;

    my ($event_type, undef, $month) = @parts;
    # 将月份追加到对应事件类型的数组中
    push @{$timetable{$event_type}}, $month;
}

close $fh;

# 封装到外层的Timetable哈希中
my %result = ( Timetable => \%timetable );

# 打印验证结果(可选,用于调试)
use Data::Dumper;
print Dumper(\%result);

关键细节说明:

  • use strict; use warnings;:强制语法检查和警告输出,新手务必添加,能快速定位代码错误。
  • 文件操作:用open打开文件,搭配die在文件无法读取时给出明确错误信息(比如文件不存在、权限不足)。
  • 行处理逻辑:chomp清理换行符;跳过空行避免无效数据干扰。
  • 字符串分割:split /\//将每行按斜杠拆分为数组,直接提取第一个元素(事件类型)和第三个元素(月份),中间的Month用undef忽略。
  • 哈希数组操作:push @{$timetable{$event_type}}, $month是Perl中向哈希值(数组引用)添加元素的标准写法,会自动为新的事件类型创建数组。
  • 结果验证:Data::Dumper模块可将哈希结构以可读格式打印,方便确认结果是否符合预期。

运行步骤:

  1. 将代码保存为timetable.pl
  2. 将你的时间线文件命名为timeline.txt,与脚本放在同一目录(或修改脚本中的文件路径)
  3. 执行命令:perl timetable.pl,即可查看生成的哈希表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:20:08