我对Perl数据结构有疑问。
我有一个文件1.txt
,其中包含以下字段和数据。
Student rollno class
John,23,2
Mike,25,2
Ray,78,3
Tim,30,3
Mark,22,2
请问如何在Perl中打印输出?
我正在分割文件并获取一个数组,但却在结果集上磕磕绊绊。您能否描述一下如何获得如下输出?
2= john, mike, mark
3= ray, tim
我需要一个可以结合该结果集的数据结构。
答案 0 :(得分:0)
如果您使用第3列作为每个列的键,则可以设置Hash of Arrays来管理数据。首先加载文件,然后用逗号将字段拆分成数组。然后如链接文档中的“生成哈希数组”示例中的第28行所述设置数据结构。一旦你将它们全部组合在一起,你只需将它们全部打印出来,就像链接的例子一样。
该策略的简单示例可能如下所示(请注意,我在脚本的__DATA__
部分中有数据而不是从文件中读取数据):
#!/usr/bin/perl
use warnings;
use strict;
my %results;
while (<DATA>) {
chomp;
my @elems = split(/,/, $_);
push(@{$results{$elems[2]}}, $elems[0]);
}
for my $key ( sort { $a <=> $b } keys %results )
print "$key = ";
print join(', ', @{$results{$key}}), "\n";
}
__DATA__
John,23,2
Mike,25,2
Ray,78,3
Tim,30,3
Mark,22,2
生成的输出如下所示:
2 = John, Mike, Mark
3 = Ray, Tim