#!/usr/local/bin/perl $src_charset = shift; $src_file = shift; open(F, $src_file) || die "cannot open $src_file: $!\n"; while() { next unless /^0x([0-9a-fA-F]{2})([0-9a-fA-F]{2})\s+0x([0-9a-fA-F]{4})\s/; $set{$3} = [] unless defined $set{$3}; push @{$set{$3}}, ",(make-char '$src_charset ?\\x$1 ?\\x$2)"; } close(F); while(@ARGV) { $dst_charset = shift; $dst_file = shift; open(F, $dst_file) || die "cannot open $dst_file: $!\n"; while() { next unless /^0x([0-9a-fA-F]{2})([0-9a-fA-F]{2})\s+0x([0-9a-fA-F]{4})\s/; next unless defined $set{$3}; $dst = ",(make-char '$dst_charset ?\\x$1 ?\\x$2)"; foreach $src (@{$set{$3}}) { print "($src . $dst); $3 $'"; } delete $set{$3}; } close(F); }