Perl数据结构

时间:2016-07-20 19:24:18

标签: perl data-structures

我对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

我需要一个可以结合该结果集的数据结构。

1 个答案:

答案 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