in reply to problem with Unicode::UCD

The source of the undefined value is the call to charblock. The docs for Unicode::UCD in regards to its charblock routine states, "If the argument is not a known character block, 'undef' is returned". A couple of solutions might be:
my $c = charblock($uChar) || $uChar; # default to original value # or my $c = charblock($uChar) or next; # skip iteration
(take note that I know next to nothing about unicode, though)