与我之前的问题(found here)相关,我希望能够用二维数组实现答案,而不是一维。
Reference Array
row[1][0]: 13, row[1][1]: Sony
row[0][0]: 19, row[0][1]: Canon
row[2][0]: 25, row[2][1]: HP
Search String: Sony's Cyber-shot DSC-S600
End Result: 13
答案 0 :(得分:3)
use strict;
use warnings;
my @array = (
[ 19, 'Canon' ],
[ 13, 'Sony' ],
[ 25, 'HP' ],
);
my $searchString = "Sony's Cyber-shot DSC-S600";
my @result = map { $array[$_][0] } # Get the 0th column...
grep { $searchString =~ /$array[$_][1]/ } # ... of rows where the
0 .. $#array; # first row matches
print "@result"; # prints '13'
这种方法的优点在于它可以处理多种匹配的可能性,因此如果索尼和惠普决定在相机上进行协作,那么您的代码可以同时返回! (13 25
)