我正在进行perl赋值,它有三个数组 - @ array_A,@ array_B和array_C,其中有一些值,我grep for a string" CAT"在数组A上并获取其索引
my @index = grep { $@array_A[$_] =~ 'CAT' } 0..$#array_A;
print "Index : @index\n";
输出:指数:2 5
我必须将其作为输入并检查索引2和5处的其他两个数组的值并将其打印到文件中。 特技是字符串的位置 - " CAT"变化。 (索引可能是5,7和9)
我在这里找不到逻辑,寻找逻辑方面的帮助。
答案 0 :(得分:3)
这是一个过于冗长的例子,说明如何提取所需的值以显示正在发生的事情,同时希望留出一些空间让你不得不进一步调查。请注意,使用=~
时使用正则表达式分隔符是惯用的Perl。例如:$name =~ /steve/
。
use warnings;
use strict;
my @a1 = qw(AT SAT CAT BAT MAT CAT SLAT);
my @a2 = qw(a b c d e f g);
my @a3 = qw(1 2 3 4 5 6 7);
# note the difference in the next line... no @ symbol...
my @indexes = grep { $a1[$_] =~ /CAT/ } 0..$#a1;
for my $index (@indexes){
my $a2_value = $a2[$index];
my $a3_value = $a3[$index];
print "a1 index: $index\n" .
"a2 value: $a2_value\n" .
"a3 value: $a3_value\n" .
"\n";
}
输出:
a1 index: 2
a2 value: c
a3 value: 3
a1 index: 5
a2 value: f
a3 value: 6