3

请问,我怎样才能做这样的比赛:

my @variable = split;
if ($variable[any_index] =~ m/'string'/) {print $variable[next_index];} 

有没有一种简单的方法来指定 $variable[any_index]?

是否可以在语句“print $variable[next_index]”中使用某种“向前看”?

提前致谢!

4

3 回答 3

4
print $variable[$_] for grep { $variable[$_-1] =~ /'string'/ } 1..$#variable
于 2012-10-12T22:20:09.517 回答
2
if ( my ($idx) = grep $variable[$_] =~ /string/, 0..$#variable ) {
    print "$variable[$idx+1]\n";
}

如果要打印所有匹配项,

for my $idx ( grep $variable[$_] =~ /string/, 0..$#variable ) {
    print "$variable[$idx+1]\n";
}
于 2012-10-12T22:19:07.730 回答
1

不要误会我的意思,但是 grep 和 map 总是让我害怕。这是我的做法:

#!/usr/bin/perl -w
use strict;

my @array = qw/hello world hello there hello you/;
foreach (0..$#array) 
{
    print $array[$_ + 1]."\n" if $array[$_] =~ /llo/;
}

这将打印:

world
there
you
于 2012-10-13T05:01:46.743 回答