use Getopt::Long;
use strict;
use vars qw($atr $value $char
- $opt_map $opt_mapfrom $opt_mapto
+ $opt_map $opt_rev_map $opt_mapfrom $opt_mapto
$opt_atr $opt_allatr $opt_showatr
$opt_query
$opt_help
my $usage=<<EOF;
Usage: perl $0 [-m <map> | --map <map> |
+ -r <reverse map> |
--mapfrom <map> |
--mapto <map> |
-q <expression> |
&GetOptions("mapto=s"=>\$opt_mapto,
"mapfrom=s"=>\$opt_mapfrom,
"m=s"=>\$opt_map,
+ "r=s"=>\$opt_rev_map,
"a=s"=>\$opt_atr,
"aa"=>\$opt_allatr,
"show-attribute"=>\$opt_showatr,
"h",\$opt_help);
if($opt_help
- or !((($opt_map or $opt_mapfrom or $opt_mapto) and @ARGV==0)
+ or !((($opt_map or $opt_rev_map or $opt_mapfrom or $opt_mapto) and @ARGV==0)
or($opt_showatr and @ARGV==0)
or @ARGV==1
)
}
if($opt_map){
+ &get_db($opt_map);
if(defined(%{$chardb{$opt_map}})){
foreach $char (sort keys %{$chardb{$opt_map}}){
if($chardb{$opt_map}->{$char}){
}else{
print STDERR "No map for $opt_map.\n";
}
+}elsif($opt_rev_map){
+ &get_reverse_db($opt_rev_map);
+ if(defined(%{$reverse_chardb{$opt_rev_map}})){
+ foreach $char (sort keys %{$reverse_chardb{$opt_rev_map}}){
+ if($reverse_chardb{$opt_rev_map}->{$char}){
+ print $char,"\t",$reverse_chardb{$opt_rev_map}->{$char},"\n";
+ }
+ }
+ }else{
+ print STDERR "No map for $opt_rev_map.\n";
+ }
}elsif($opt_allatr){
$char=&de_er($char) if($char=~/\d/);
print $char,"\n";
foreach $atr (sort keys %db){
- if($chardb{$atr}->{"?$char"}){
- print " ",$atr,":",$chardb{$atr}->{"?$char"},"\n";
+ if($value=&get_char_attribute($char,$atr)){
+ print " ",$atr,":",$value,"\n";
}
}
}elsif($opt_atr){
print $char,"\n";
print " ",$opt_atr,":",&get_char_attribute($char,$opt_atr),"\n";
}elsif($opt_showatr){
+# print "In DB\n";
foreach $atr (sort keys %db){
- print $atr,"\n";
+ print " ",$atr,"\n";
}
+# print "In reverse DB\n";
+# foreach $atr (sort keys %reverse_db){
+# print " ",$atr,"\n";
+# }
}elsif($opt_query){
my $query=$char;
print join "\n",&get_chars_for($query),"\n";