MakeIndex4PC に関しては,いろいろ挿入するファイルがあったり
出力内容自体が複雑故って感じもしますね.

IsKoukoku の方は,チョコさんから見ていじりがいがあるかも?
確か,IsKoukoku の中核部分は以前から公開されていて,
クローズドではないと思うので貼ってみます.

    foreach my $NG_word_ref (@FOX_Ro54)
    {
        my $NG_word = $NG_word_ref->[0]; # リファレンスから取り出し。
        if (my $matched = eval{ return $In_Strings =~ m<$NG_word> ? $& : undef }) {
            $NG_word_ref->[0] = $matched; return $NG_word_ref;
        } # 合致したらNGワード部分の摘出とリファレンスを返す。
        # 不正 NG ワードがあったり引っかからなければスキップ
    }
    return '';

ちなみに,@FOX_Ro54 は初期化段階でこんな感じで読み込まれます.

    open(ADFILE,"....../Rock54data");
    @FOX_Ro54 = map { [ (split /<>/)[5,6,7] ] } <ADFILE>;
    close(ADFILE)            ;