循环在一次匹配后转到下一次出现

时间:2013-06-17 18:56:37

标签: arrays perl matching

我有一个数组,我用来匹配另一个表。当我执行它时,它只抓取第一次出现。例如,如果company1在我的数组中,它将只获取company1的第一个实例,然后转到下一个搜索词,比如company2。如果在company1之后有一家公司1.0,那么只有公司1会吐出来。我希望它在同一行上吐出company1等\ t company1.0等等,因为两个列表之间会有多个匹配。

这是我的代码:

my @attendees = ('company');
foreach $fbm (@attendees) {
    open(RFILE, '<', "file.txt")
    or die "no such file posf: $!";

    while ( $line = <RFILE> )
    { 
        if ($line =~ /$fbm/i)
        {
            print $fbm."\t". $line;
            last;
        }
        if (eof(RFILE)) 
        {
            print "posf"."\n";
        }               
    }
}
print STDERR "\n\nFINISHED!!";

我的输入:

company1
company1.0
company1 also begins with 1 but different ending
company1 can i have this one too?

我的输出:company1 期望的输出:company1 \ tcompany1.0 \ tcompany1也以1开头但不同的结尾\ tcompany1我也可以拥有这个吗?

1 个答案:

答案 0 :(得分:0)

my @attendees = ('company');
my @whatever;
open ( my $fh, '<', "file.txt")
    or die "could not open file.txt: $!";

while ( <$fh> ) {
    chomp $_;
    push @whatever, $_;
}

foreach my $attendee ( @attendees ) {
     foreach my $thing ( @whatever ) { 
        if ($thing =~ /$attendee/i) {
            print $attendee, "\t", $thing, "\n";
        }
    }
}
print STDERR "FINISHED!\n";

也许这就是你想要的,但我必须承认我不太确定。