行が * で始まる場合でも、私のコードは範囲を抽出しようとします これが私のコードです:
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;
FINAL 出力ファイルには、\n\n で区切られたすべての IF と END-IF の間の範囲のみが含まれている必要があります。また、IF ブロック内に IF がある場合、最初の if から 2 番目の IF の前の行までの範囲は次のようになります。 \n\n で区切られた FINAL に保存されました