If no return is found and if the last statement is an expression, its value is returned. If the last statement is a loop control structure like a foreach or a while, the returned value is unspecified. The empty sub returns the empty list. #### D:\>perl -MData::Dumper -e "sub x{1 for 1..5};@y=x();print 'ha' if defined @y" ha