1#!/usr/bin/perl -w 2 3use strict; 4use Data::Dumper; 5 6if ($#ARGV != 1) { 7 print "Usage: $0 <cldr dir> <input file>\n"; 8 exit; 9} 10 11open(FIN, "$ARGV[0]/posix/UTF-8.cm"); 12my @lines = <FIN>; 13chomp(@lines); 14close(FIN); 15 16my %cm = (); 17foreach my $line (@lines) { 18 next if ($line =~ /^#/); 19 next if ($line eq ""); 20 next if ($line !~ /^</); 21 22 my @a = split(" ", $line); 23 next if ($#a != 1); 24 25 $a[1] =~ s/\\x//g; 26 $a[0] =~ s/_/ /g; 27 $cm{$a[1]} = $a[0] if (!defined $cm{$a[1]}); 28} 29 30open(FIN, $ARGV[1]); 31@lines = <FIN>; 32chomp(@lines); 33close(FIN); 34 35foreach my $line (@lines) { 36 if ($line =~ /^#/) { 37 print "$line\n"; 38 next; 39 } 40 41 my @l = split(//, $line); 42 for (my $i = 0; $i <= $#l; $i++) { 43 my $hex = sprintf("%X", ord($l[$i])); 44 45 if (( $l[$i] gt "\x20") 46 && ($l[$i] lt "a" || $l[$i] gt "z") 47 && ($l[$i] lt "A" || $l[$i] gt "Z") 48 && ($l[$i] lt "0" || $l[$i] gt "9") 49 && ($l[$i] lt "\x80")) { 50 print $l[$i]; 51 next; 52 } 53 54 if (defined $cm{$hex}) { 55 print $cm{$hex}; 56 next; 57 } 58 59 $hex = sprintf("%X%X", ord($l[$i]), ord($l[$i + 1])); 60 if (defined $cm{$hex}) { 61 $i += 1; 62 print $cm{$hex}; 63 next; 64 } 65 66 $hex = sprintf("%X%X%X", 67 ord($l[$i]), ord($l[$i + 1]), ord($l[$i + 2 ])); 68 if (defined $cm{$hex}) { 69 $i += 2; 70 print $cm{$hex}; 71 next; 72 } 73 74 print "\n--$hex--\n"; 75 } 76 print "\n"; 77 78} 79