使用perl 脚本将如下文本中所有第一列字母对应的数字分别存入数组 例如a(1 2 5) b(3 8 54) c(11 54) a 1 a 2 b 3 a 5 b 8 c 11 c 55 b 54
时间: 2024-10-11 08:18:11 浏览: 25
Perl脚本:文本处理的瑞士军刀
在Perl中,你可以使用数组和哈希数据结构来处理这个问题。首先,读取文件内容并将行分割成字段,然后根据第一列的字母创建一个哈希,键是字母,值是一个列表存储对应的数字。以下是简单的脚本示例:
```perl
#!/usr/bin/perl
use strict;
use warnings;
# 初始化空的哈希
my %numbers;
# 读取输入文件(这里假设文件名是"data.txt")
open my $fh, '<', 'data.txt' or die "无法打开文件: $!";
while (my $line = <$fh>) {
chomp $line; # 删除行尾的换行符
my ($letter, $number) = split /(\s+)/, $line; # 分割字段
push @{$numbers{$letter}}, $number if exists $numbers{$letter}; # 如果字母已存在,则添加数字到列表中
$numbers{$letter} = [$number] unless exists $numbers{$letter}; # 否则,创建一个新的列表并添加第一个数字
}
# 关闭文件句柄
close $fh;
# 打印数组
foreach my $letter (keys %numbers) {
print "$letter (", join(", ", @{$numbers{$letter}}), ")\n";
}
#
阅读全文