apparently 'return' in eval{} returns the value of eval{}, not of the subroutine