我有两个文件,即a.txt
和b.txt
。我的任务是搜索a.txt
中b.txt
的所有字符串。如果我在a.txt
和b.txt
的字符串之间有任何匹配,那么我想打印与该字符串相对应的行及其文件b.txt
中的下一行。
我一直在尝试下面提到的代码,但问题是它没有打印任何东西。你能否指出我的问题并提出解决方法?
open fh, "<", "b.txt" or die $!;
open fh1, "<", "a.txt" or die $!;
my $array1 = < fh>;
my $array2 = < fh1>;
while (my $array1 = < fh>) {
if ($array1 =~ m/$array2/i) {
print $array1;
print scalar < fh>;
}
}
答案 0 :(得分:1)
尝试这样的事情
open fh, "<", "b.txt" or die $!;
open fh1, "<", "a.txt" or die $!;
while(my $item1 = <fh>)
{
while(my $item2 = <fh1>)
{
if($item1 =~ m/$item2/i)
{
print $item1;
print <fh>;
}
}
seek fh1, 0, 0;
}
close fh;
close fh1;
答案 1 :(得分:0)
这是显而易见的:
use strict;
use warnings;
my $line1;
my $line2;
my $fh;
my $fh1;
my $counter;
open $fh, "<", "b.txt" or die $!;
open $fh1, "<", "a.txt" or die $!;
my @b = <$fh>;
my @a = <$fh1>;
for (@b)
{
$line1 = $_;
for (@a)
{
$line2 = $_;
if ($line1 =~ /^$line2$/)
{
$counter++;
open $outfile, ">", "a_${counter}.txt";
print $outfile $line2;
close $outfile;
}
}
}
我真正理解的是你想用scalar
做什么?
答案 2 :(得分:-1)
我可以帮助你获得两个元素数组,我知道你想如何打印匹配的和下一个元素,
use Data::Dumper;
open(FH, "<$file") or die "$!";
open(FH1, "<$file1") or die "$!";
my @array1 ;
my @array2 ;
while(<FH>) {
chomp($_);
push @array1,$_;
}
while(<FH1>) {
chomp($_);
push @array2,$_;
}
close(FH);
close(FH1);
print Dumper(@array1);
print Dumper(@array2);