#!/usr/bin/perl
use strict;
use warnings;
my @array = ( ['John', 'Apple', 6],
['Adam', 'Banana', 7],
['Cass', 'Orange', 7],
['Brad', 'Lemon', 6],
['Lisa', 'Grape', 5] );
列是名称,水果和年龄。如何使用grep或任何其他命令提取具有相同年龄的条目,并将其推入另一个数组?例如,如果我想提取年龄为7的条目,结果数组将是这样的:
@age7 = ( ['Adam', 'Banana', 7],
['Cass', 'Orange', 7] );
如果我的任务有几千个条目(数组中的数组),我该如何实现这个?
答案 0 :(得分:0)
一种方法是使用哈希,如下所示:
use strict;
use warnings;
use Data::Dumper;
my @array = ( ['John', 'Apple', 6],
['Adam', 'Banana', 7],
['Cass', 'Orange', 7],
['Brad', 'Lemon', 6],
['Lisa', 'Grape', 5] );
my %hash;
for (@array) {
push @{ $hash{$_->[2]} }, $_;
}
print Dumper $hash{7};
然而,这将区分7
和7.0
之类的数字,因为散列键是字符串。如果这是一个问题,您可以始终循环键并使用比较,例如if ($key >= 7.1 and $key <= 7)