There are 5 files using the alnum posix:
Decoder, Display, Load, LogInOut, and YaBBC
In Display, Load, and LogInOut the posix has the last colon missing.
In Display the line containing the posix should be
$urlname =~ s/([^[:alnum:]])/sprintf('%%%02X', ord($1))/egxsm;
In Load it should be
s/%([[:alnum:]][[:alnum:]])/pack('C', hex($1))/egxsm;
and in LogInOut it should be
if ( $id =~ /[^[:alnum:]]/xsm ) {
YaBBC and Decoder has the correct posix already. (Did you just use a global find and replace?
If so, you may have inadvertently broken YaBBC. )
I'm in the middle of a major database reconfiguration so I don't dare upgrade Perl to the newest version until that's done. (And it may be a while - 4000+ rows to be hand-edited.)