$info{$_}->{string} = $di{$_} < 32 ? chr($di{$_} + 0x2400) : chr(0xFFFD);
}
+# convert info hashes into arrays of strings to output in display order
+for my $row (values %info) {
+ $row = [ map { $row->{$_} } qw/name category script string/ ];
+ # strip off trailing missing values (especially string may be unknown)
+ defined $row->[-1] ? last : pop @$row for 1 .. @$row;
+}
+
# output perl code of hash
# (assume no backslashes or curlies, so we can just q{} w/o escaping)
print "+{\n";
printf "q{%s}=>[%s],\n", $_, join(',',
$di{$_}, # original code point
$info{$_} # optional additional arguments
- ? map {"'$_'"} @{ $info{$_} }{qw/name category script/},
- $info{$_}->{string} || ()
+ ? map {"'$_'"} @{ $info{$_} }
: ()
) for sort keys %di;
print "}\n";