将Perl结构转换为数组

将Perl结构转换为数组,perl,file,structure,Perl,File,Structure,一个简单的问题,但我在任何地方都找不到答案。 我有一个由学生组成的文本文件,比如说,看起来像这样: 1 bob smedley 4 2 rob nielsen 7 3 sol connie 9 4 jon sidney 18 struct Student => {ID => '$', name => '$', surname => '$', points => '$',}; id = 1; name = bob; surname = smedley; poin

一个简单的问题,但我在任何地方都找不到答案。 我有一个由学生组成的文本文件,比如说,看起来像这样:

1 bob smedley 4
2 rob nielsen 7
3 sol connie 9
4 jon sidney 18
struct Student => {ID => '$', name  => '$', surname => '$', points => '$',};
id = 1;
name = bob;
surname = smedley;
points = 4;
然后我有一个结构学生,看起来像这样:

1 bob smedley 4
2 rob nielsen 7
3 sol connie 9
4 jon sidney 18
struct Student => {ID => '$', name  => '$', surname => '$', points => '$',};
id = 1;
name = bob;
surname = smedley;
points = 4;
我使用以下命令将此文本文件加载到数组中:
@stud=

现在我想把我的
@stud
中的每一行加载到一个Student结构数组中。让我们称之为
my@students以便
例如,我的第一个结构如下所示:

1 bob smedley 4
2 rob nielsen 7
3 sol connie 9
4 jon sidney 18
struct Student => {ID => '$', name  => '$', surname => '$', points => '$',};
id = 1;
name = bob;
surname = smedley;
points = 4;
并对
@stud
中的每一行执行此操作。
或者,我可以直接从文件加载这些结构,但我认为使用temp array@stud可能更容易

您不需要将文件拖入数组。您可以逐行处理它:

#!/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;
}
#/usr/bin/perl
使用警告;
严格使用;
使用Class::Struct;
结构Student=>{ID=>'$',name=>'$',姓氏=>'$',points=>'$',};
我的学生;
而(){
我的($id,$name,$姓氏,$points)=拆分;
我的$s=学生->新建;
$s->ID($ID);
$s->name($name);
$s->姓氏($姓氏);
$s->points($points);
推送@students$s;
}

您不需要将文件拖入数组。您可以逐行处理它:

#!/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;
}
#/usr/bin/perl
使用警告;
严格使用;
使用Class::Struct;
结构Student=>{ID=>'$',name=>'$',姓氏=>'$',points=>'$',};
我的学生;
而(){
我的($id,$name,$姓氏,$points)=拆分;
我的$s=学生->新建;
$s->ID($ID);
$s->name($name);
$s->姓氏($姓氏);
$s->points($points);
推送@students$s;
}

@Whizzil:Remove the prototype.@Whizzil:Read and.@Whizzil:Remove the prototype.@Whizzil:Read and。