# u2k.pl ver.0.2 1998.6.6

# 使い方
# jperl u2k.pl <入力ファイル名>
# 結果は file.out というファイルに書き込まれる。

# u2k.tbl というデータファイルが必要。
# u2k.tbl の形式は、各行が
# ユニコード(16進数大文字) <SPACE> KS完成型文字(7bitに落したもの)

open(TABLE, "u2k.tbl") || die "Can't open u2k.tbl: $!\n";
while(<TABLE>){
    ($a, $b) = split(' ', $_);
    $uk{$a} = $b;
}
close TABLE;

open(OUTFILE, '>file.out');
while(<>){
    chop;
    split(/\&\#/, $_);
    $head = shift @_;
    print OUTFILE $head;
    foreach (@_) {
        if($_ =~ /^(\d+)\;?(.*)$/){
            print OUTFILE &conv($1);
            print OUTFILE $2;
        }else{
            print OUTFILE $_;
        }
    }
    print OUTFILE "\n";
}
close(OUTFILE);

sub conv {
    local($unikey);
    $unikey = sprintf("%x", $_[0]);
    $unikey =~ tr/a-z/A-Z/;
    $ksvalue = $uk{$unikey};
    if($ksvalue ne ""){
        "\e\$(C" . $ksvalue . "\e(B";
    }else{
        "\&\#" . $_[0] . "\;" ;
    }
}
