我写了一个perl脚本来匹配一个文件中的特定单词,并在第二个文件中找到包含它们的行。但它并不匹配第一个文件中的所有相关内容,也不会在第二个文件中选择所有相关内容。我认为我的代码中肯定存在一些问题。请你解释一下。感谢。
open my $file2, '<', $f2;
while (my $line_comp = <$file2>) {
chomp $line_comp;
$line_comp =~ m/(.*)(-from)(\s+)(\S*)(.*)(-scheme)(\s+)(\S*)(.*)(-to)(\s+)(\S*)(.*)/;
my $fr = $4;
my $sc = $8;
my $t = $12;
if (defined $fr && defined $t){
open my $file3, '+<', $f3;
open my $file4, '+>', $f4;
while (my $line_write = <$file3>) {
if ($line_write =~ m/(.*)(-)(\s*)scheme(\s+)($sc)(.*?)(-)(\s*)from(\s+)($fr)(.*?)(-to)(\s+)($t)(.*?)/sm){
print "$line_write\n"; }
else { print $file4 "$line_write";}
}
copy ("$f4", "$f3") or die "copy failed: $!";