即使该行以 * 开头,我的代码也会尝试提取范围这是我的代码:
while (<FILE1>) {
$_ =~ s/^\s+//; #remove leading spaces
$_ =~ s/\s+$//; #remove trailing spaces
if (/IF/ .. /END-IF/) {
if($_ =~ m/END-IF/) {
$flag = 1;
}
print FINAL "$_\n";
if ($flag == 1) {
$flag = 0;
print FINAL "\n\n";
}
}
}
close FINAL;
close FILE1;
我的最终输出文件应该只包含所有 IF 和 END-IF 之间的范围,由 \n\n 分隔,如果 IF 块中有一个 IF,则从第一个 if 到第二个 IF 之前的行的范围应该是保存在 FINAL 中,由 \n\n 分隔