まず,元のテキストを見て,訂正がない文の形式的特徴を読み取る。訂正がない文の場合,次に * あるいは @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 では @, % に特別な意味があるので \ でエスケープしている