one safety issue here: LJ::load_userids isn't guaranteed to give us back a valid user object (e.g., if we passed it an invalid userid).

in an ideal case we'd never run into the issue, but given user input, it's best to add an additional check:

    next unless $uobjs->{$userid};