From the documentation for the signon() method in Net::AOLIM (emphasis added):
Returns undef on failure, setting $main::IM_ERR and $main::IM_ERR_ARGS as appropriate. Returns 0 on success.
Aagh! And most of the other methods in the module seem to work the same way. Is there some strange programming subculture where such things make sense (perhaps there's a taboo against ever returning true values)?
Of course, I can't get the module to work anyway, so I may go back to Net::AIM, which was sort of working.