I don't know the source code of autobox, but as it is a non-standard module, things like $s.uc will probably be slower than uc $s always. But if the additional overhead comes from subroutine call, you can try something like:
BEGIN { *SCALAR::uc = \&CORE::uc }
instead of
sub SCALAR::uc { CORE::uc($_[0]); }
or the optimized
sub SCALAR::uc { goto &CORE::uc; }
(The BEGIN is important here to make it behave as a compile-time function declaration.)
If it works, you will have less one frame in the call stack, which may or may not speed things up. This suggestion is untested and may not work: There is some weirdness associated to the core functions that don't behave identically to the ordinary subs.