Пов’язане з моїм попереднім запитанням (знайшов тут), Я хочу мати можливість реалізувати відповіді, задані двовимірним масивом, а не одним розмірним.
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
Відповіді:
3 для відповіді № 1use 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"
Краса такого підходу полягає в тому, що він стосується можливості декількох матчів, тому якщо Sony і HP коли-небудь вирішили співпрацювати на камеру, ваш код може повернути і те, і інше! (13 25
)