in reply to function call / return philosophies
Varying return types has always caused problem for me down the road. Best thing to do might be to always return ref regardless of the number of parameters you receive.
I think a hashref here is a better return value than an array ref. Perl already has hashes built in. If you return an array ref, you are forcing the user of your API to re-implement associative arrays.