まず,元のテキストを見て,訂正がない文の形式的特徴を読み取る。訂正がない文の場合,次に * あるいは @End が来るので,連続する2行をチェックし,条件に合えば,"\%ntv:\t(訂正なし)\n" を挿入するようすればよい。
現在処理中の行は $_ で参照できる。前の行を表わす特殊変数はないので,自分で変数を作り,その中に記録しておく。下のスクリプトでは,$prev という変数に,前の行の内容が収められている。1行目を読み込んだ時点では,while ブロックの最後の $prev = $_ は一度も実行されていないので,$prev は未定義となっている。
plscript/insertNC.pl -------------------------------------------------- while (<>) { #前の行の先頭が *,$_ の先頭が * または @End なら if ($prev =~ /^\*/ and $_ =~ /^(\*|\@End)/) { #次の一行を挿入 print "\%ntv:\t(訂正なし)\n"; } #$_ を出力する print; #$_ の内容を $prev の新しい値とする $prev = $_; } exit; -------------------------------------------------- Perl では @, % に特別な意味があるので \ でエスケープしている