如何进行“if($ variable [any_index] = ~m /'string'/){print $ variable [next_index];}”类型的匹配?

时间:2012-10-12 22:08:19

标签: perl

请问,我该怎么做这样的比赛:

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

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

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

提前致谢!

3 个答案:

答案 0 :(得分:4)

print $variable[$_] for grep { $variable[$_-1] =~ /'string'/ } 1..$#variable

答案 1 :(得分: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";
}

答案 2 :(得分:1)

别误会我的意思,但grep和地图总是吓到我。这是我的方式:

#!/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