使用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 13:18:11 浏览: 8
在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";
}
#
相关问题
使用perl 脚本将如下文本中所有第一列字母对应的数字分别存入数组 a 1 a 2 b 3 a 5 b 8
Perl脚本可以利用`split`函数以及数组来处理这种任务。假设输入文本存储在一个文件中,你可以通过以下步骤读取并存储数据:
```perl
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, '<', 'input.txt' or die "无法打开文件: $!";
my @data;
while (my $line = <$fh>) {
chomp $line; # 移除行尾的换行符
my ($letter, $number) = split / /, $line;
push @data, { letter => $letter, number => $number };
}
close $fh;
# 将每个字母对应的数字存入数组'a'
my @array_a;
foreach my $item (@data) {
if ($item->{letter} eq 'a') {
push @array_a, $item->{number};
}
}
print "Array 'a': @array_a\n";
```
在这个脚本里,我们首先打开名为`input.txt`的文件,然后逐行读取。每行文本被`split`成两部分(字母和数字),并作为一个哈希元素添加到`@data`数组中。接着筛选出字母为'a'的项,并将其数值存入`@array_a`。
运行此脚本后,它会将第一列是'a'的所有数字打印出来。如果`input.txt`的内容保存在内存里,可以直接替换`open`语句中的文件名。
使用perl 脚本将如下文本文件中所有第一列字母对应的字符串分别存入数组 例如a(AG GK SRG) b(EST WB GC) c(KSG XYG) a AG a GK b EST a DRG b WB c KSG c XYG b GC
在Perl中,你可以使用`open()`函数打开文本文件,然后逐行读取数据,使用正则表达式解析每一行,提取第一列的字母,并将其对应的字符串添加到关联数组或列表中。这里是一个简单的示例脚本:
```perl
#!/usr/bin/perl
use strict;
use warnings;
my %array; # 创建一个哈希,键是字母,值是字符串列表
# 打开并读取文件
open(my $fh, '<', 'your_file.txt') or die "Could not open file: $!";
while (my $line = <$fh>) {
chomp $line; # 去除换行符
my ($letter, $string) = split /(\s+|\(|\)|\[|\])/; # 分割第一列和其余部分
if ($letter =~ /^[A-Za-z]/) { # 确保我们只处理字母
push @{$array{$letter}}, $string; # 将字符串添加到对应字母的列表中
}
}
close($fh); # 关闭文件
# 输出或进一步处理数组
foreach my $key (keys %array) {
print "$key => [" . join(", ", @{$array{$key}}) . "]\n";
}