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

Perl中如何将数组相似元素分组后在foreach中批量处理

Perl数组元素配对分组解决方案

实现思路

  1. 分组相似元素:用哈希表将数组中去除_n/_p后相同的元素归为一组,键为去除标识后的基准字符串,值为对应的_n/_p元素数组。
  2. 筛选配对元素:遍历每个分组,通过正则筛选出对应_n和_p的元素。
  3. 格式化输出:用格式化输出保证格式统一,同时将结果写入指定文件。

完整代码

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

# 输入数组
my @array = qw(abc_n abc_p gg_n gg_p munday_n_xy munday_p_xy soc_n soc_p);

# 哈希表存储分组后的引脚对
my %pin_groups;

foreach my $pin (@array) {
    # 生成分组键:移除字符串中的_n或_p(非破坏性替换,不修改原字符串)
    my $group_key = $pin =~ s/_[np]//r;
    push @{$pin_groups{$group_key}}, $pin;
}

# 打开输出文件,失败则抛出错误
open my $out_fh, '>', 'output.txt' or die "无法打开输出文件: $!";

# 遍历每个分组,生成目标格式输出
foreach my $key (sort keys %pin_groups) {
    # 从分组中筛选出_n和_p对应的元素
    my ($n_pin) = grep { /_n/ } @{$pin_groups{$key}};
    my ($p_pin) = grep { /_p/ } @{$pin_groups{$key}};
    
    # 格式化写入文件,保证格式与示例一致
    printf $out_fh "DUF A1 ( .pin1(%s),  .pin2(%s));\n", $n_pin, $p_pin;
}

close $out_fh;

代码细节说明

  • 严格模式与警告:use strict; use warnings;强制规范代码写法,避免未声明变量、正则错误等潜在问题。
  • 分组键生成:s/_[np]//r是Perl 5.14及以上支持的非破坏性替换,直接返回处理后的字符串作为分组键,确保原元素不受修改。
  • 元素筛选:grep { /_n/ }精准匹配分组中带_n的元素,保证配对的准确性,即使数组元素顺序混乱也能正确筛选。
  • 格式化输出:printf确保.pin2前有两个空格,输出格式完全符合示例要求;文件操作使用词法文件句柄$out_fh,比全局句柄更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:47