我有一个数组,我用来匹配另一个表。当我执行它时,它只抓取第一次出现。例如,如果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我也可以拥有这个吗?
答案 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";
也许这就是你想要的,但我必须承认我不太确定。