The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use lib "lib";

use warnings;
use YAML;
use Encode;
use Encode::JP::Mobile 0.20;
use Encode::JP::Mobile::Charnames qw( unicode2name unicode2name_en );

my($file, $to, $force) = @ARGV;

my $dat = YAML::LoadFile($file);
my $from = ($file =~ /(\w*)-table\.yaml/)[0] or die;
$to ||= 'docomo';

warn "Updating $from table by mapping to $to pictograms\n";

for my $r (@$dat) {
    for my $key ( qw( name name_en ) ) {
        next if exists $r->{$key} && !$force;
        my $code = $from eq 'kddi' ? 'unicode_auto' : 'unicode';
        my $char = chr hex $r->{$code};
        eval {
            my $mapped = decode("x-utf8-$to", encode("x-utf8-$to", $char, Encode::FB_CROAK));
            my $func   = $key eq 'name' ? \&unicode2name : \&unicode2name_en;
            my $name   = $func->(ord $mapped);
            $r->{$key} = encode_utf8($name) if $name;
        };
        warn $@ if $@;
    }
}

YAML::DumpFile($file, $dat);