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.
defined
on the return value and you have a clean test for whether a module call has succeeded. It could be much worseAll of this is moot if the module doesn't work though
:-)
Re:Hrmmm
nicholas on 2003-11-02T23:47:55
Isn't too bad? - I guess so. But they are stomping in the
main::
namespace (rather than the caller's). Using fixed variables means that they are not threadsafe (at least in a 5.005 threads world, or anything non-perl that has POSIX-like threads semantics). Either point alone would be enough for me to toss this code back.Re:Hrmmm
rob_au on 2003-11-03T01:06:48
But they are stomping in themain::
namespace (rather than the caller's). Using fixed variables means that they are not threadsafe (at least in a 5.005 threads world, or anything non-perl that has POSIX-like threads semantics).Wholly agreed. The practice of manipulating variables within the
main::
namespace would be something which I too would question. Not necessarily from the perspective of thread safety but for more pragmatic reasons relating to professional (developer) courtesy - Playing in other people's gardens without permission (by way of variables exported at the request of the calling code) is simply not nice.Re:Hrmmm
drhyde on 2003-11-03T13:34:25
Right, if it's documented, and is consistent across the module, what's the problem? If you prefer true/false, write a wrapper.
And consider what happens if your function can legitimately return values from 0 upwards, or can fail. For instance "I updated 0 files in the specified directory" vs "I couldn't open the specified directory". In that case, I like to return undef for failure.