in reply to Return values from package methods
Sounds like a bug that was fixed.
Magic is needed to implement the 'subroutines exitted using a means other than die() or return(), result with the last statement executed, in the context that the subroutine was called within.' Perhaps in 5.6, this magic was a little more lazy, and never explicitly set the return result to be an empty list in the case that a subroutine has no statement in it?
Perhaps it is unreasonable to expect a reliable result for a subroutine that does not implicitly or explicitly return a result? :-)