# use strict; # TODO
+use Encode qw(decode_utf8);
+
sub doStatement {
my ($in) = @_;
# verify the update statement whether there are any weird
# characters.
### this can be simplified.
- foreach ( split //, $lhs . $rhs ) {
- my $ord = ord $_;
- if ( $ord > 170 and $ord < 220 ) {
- &status("statement: illegal character '$_' $ord.");
+ for my $temp ($lhs,$rhs ) {
+ my $temp2 = decode_utf8($temp);
+ if ($temp2 =~ /([^[:print:]])/ or $temp2 =~ /\N{U+FFFD}/) {
+ &status("statement: illegal character '$1' ".ord($1).".");
&performAddressedReply(
"i'm not going to learn illegal characters");
return;
}
}
-
# success.
return if ( &update( $lhs, $mhs, $rhs ) );
}