Perl算法比较数组

Perl算法比较数组,perl,Perl,我对Perl编程中的算法有一个问题,我不知道如何管理它 我有一个文本文件中的数据库,其中有一些列和许多行。我已经可以读取所有变量并将其保存到多维数组中。让我们假设它是这样的 1. Jack A math 2. John A+ math 3. Jack B sports 4. . 5. . 6. . 您可以看到课程中有四列id名称 现在我的问题是,我想将所有同名的行导出到一个新的文本文件中。我已经有了算法的想法,我可以检查第一行并将其与所有其他行进行比较,如果有相似的

我对Perl编程中的算法有一个问题,我不知道如何管理它

我有一个文本文件中的数据库,其中有一些列和许多行。我已经可以读取所有变量并将其保存到多维数组中。让我们假设它是这样的

 1.  Jack  A  math
 2.  John  A+ math
 3.  Jack  B  sports
 4. .
 5. .
 6. .
您可以看到课程中有四列id名称

现在我的问题是,我想将所有同名的行导出到一个新的文本文件中。我已经有了算法的想法,我可以检查第一行并将其与所有其他行进行比较,如果有相似的行,则将其导出,然后检查第二行并将其与下面所有其他行进行比较,如果有相似的行,则将其导出,依此类推

这是我心目中的正确算法,还是有其他算法可以做到这一点

如果您能给我一个代码示例或我可以采取的任何其他进一步步骤,我将不胜感激

我想要这个结果作为我的例子

1. Jack A for math, B in sports
2. John A+ for math 

我怀疑这是家庭作业,所以我会给你一个解决方案,你可以用它作为提示来写你自己的答案。如果您在理解上有问题,请询问

use strict;
use warnings;

my %data;

while (<DATA>) {
  my ($id, $name, $grade, $lesson) = split;
  push @{ $data{$name} }, [ $grade, $lesson ];
}

my $n;
for my $name (sort keys %data) {
  my $grades = $data{$name};
  printf "%2d. %s %s\n", ++$n, $name, join ', ', map "$_->[0] in $_->[1]", @$grades;
}

__DATA__
1.  Jack  A  math
2.  John  A+ math
3.  Jack  B  sports

你不需要数组,你需要散列。散列是键值对。这类问题确实很好。
 1. Jack A in math, B in sports
 2. John A+ in math