0

一个简单的问题,但我无法在任何地方找到解决方案。我有一个由学生组成的文本文件,可以说,看起来像这样:

1 bob smedley 4
2 rob nielsen 7
3 sol connie 9
4 jon sidney 18

然后我有一个结构Student,看起来像这样:

struct Student => {ID => '$', name  => '$', surname => '$', points => '$',};

我使用以下方法将此文本文件加载到数组中:@stud = <inFILE>;

现在我想将每一行从我加载@stud到一个学生结构数组中。让我们这样称呼它my @students;,例如,我的第一个结构如下所示:

id = 1;
name = bob;
surname = smedley;
points = 4;

并对@stud. 或者,我可以直接从文件中加载这些结构,但我认为使用临时数组 @stud 可能更容易。

4

1 回答 1

4

您不需要将文件 slurp 到数组中。您可以逐行处理它:

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

use Class::Struct;
struct Student => {ID => '$', name  => '$', surname => '$', points => '$',};

my @students;

while (<>) {
    my ($id, $name, $surname, $points) = split;
    my $s = Student->new;
    $s->ID($id);
    $s->name($name);
    $s->surname($surname);
    $s->points($points);
    push @students, $s;
}
于 2013-04-09T12:03:33.413 回答