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

如何在Perl中为匹配模式的哈希键赋值并生成Excel?

Perl 哈希处理与 Excel 生成解决方案

完整代码实现

use strict;
use warnings;
use Excel::Writer::XLSX;

# 配置参数
my $input_file  = 'your_input_file.txt';  # 替换为你的输入文件路径
my $pattern     = qr/your_target_pattern/; # 替换为你的匹配模式(正则)
my $tag_string  = '匹配成功';              # 替换为要添加的指定字符串
my $output_excel = 'file_content.xlsx';    # 输出Excel文件名

# 1. 读取文件到哈希,存储行号、行内容及标记位
my %file_data;
open my $fh, '<', $input_file or die "无法打开文件: $!";
while (my $line = <$fh>) {
    chomp $line;
    my $line_num = $.; # 获取当前行号
    $file_data{$line_num} = {
        content => $line,
        tag     => ''
    };
}
close $fh;

# 2. 匹配指定模式,为对应行添加标记字符串
foreach my $line_num (keys %file_data) {
    if ($file_data{$line_num}{content} =~ $pattern) {
        $file_data{$line_num}{tag} = $tag_string;
    }
}

# 3. 生成Excel表格
my $workbook = Excel::Writer::XLSX->new($output_excel);
die "无法创建Excel文件: $!" unless defined $workbook;

# 创建工作表并设置表头
my $worksheet = $workbook->add_worksheet('文件内容');
my @headers = ('行号', '行内容', '标记');
my $header_format = $workbook->add_format(bold => 1, align => 'center');

$worksheet->write_row('A1', \@headers, $header_format);
$worksheet->set_column(1, 1, 50); # 调整行内容列宽度,避免内容截断

# 写入数据(按行号排序,保证顺序与原文件一致)
my $row_idx = 1;
foreach my $line_num (sort { $a <=> $b } keys %file_data) {
    $worksheet->write($row_idx, 0, $line_num);
    $worksheet->write($row_idx, 1, $file_data{$line_num}{content});
    $worksheet->write($row_idx, 2, $file_data{$line_num}{tag});
    $row_idx++;
}

$workbook->close();
print "Excel文件已生成: $output_excel\n";

关键部分说明

  1. 哈希结构设计:
    用哈希引用作为哈希值,同时存储行内容和标记位,避免直接修改原行内容导致的混乱,后续扩展字段也更方便。

  2. 正则匹配处理:
    使用qr//编译正则表达式,提升匹配效率;如果需要匹配精确字符串,可改用qr/\Q目标字符串\E/,避免正则元字符干扰。

  3. Excel生成细节:

    • 设置表头格式(加粗、居中)提升可读性
    • 调整行内容列宽度,防止长文本截断
    • 按行号排序后写入数据,保证Excel中的行顺序与原文件一致

注意事项

  • 若尚未安装Excel::Writer::XLSX模块,可通过命令行安装:
    cpanm Excel::Writer::XLSX
    
  • 替换代码中的配置参数(输入文件路径、匹配模式、标记字符串)为你的实际需求
  • 150行文件的规模无需担心内存问题,若处理超大文件可改为边读边写的流式模式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:48:21