>>>>> "sw" == shawn wilson <ag4ve...@gmail.com> writes:
>> subs in perl ALWAYS return something, either the value from return or >> the last evaluated expression. sw> What do you mean by this? sw> sub nothing { sw> my $something = 5; sw> if ( $something == 5) {} sw> } sw> ... will return 'undef' and not 5 or anything else, right? from perldoc perlsub: A "return" statement may be used to exit a subroutine, optionally specifying the returned value, which will be evaluated in the appropriate context (list, scalar, or void) depending on the context of the subroutine call. If you specify no return value, the subroutine returns an empty list in list context, the undefined value in scalar context, or nothing in void context. If you return one or more aggregates (arrays and hashes), these will be flattened together into one large indistinguishable list. 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. i never said subs return something useful but something is always available to the caller on the stack. this is one (of many) reasons i say to (almost) always use explicit returns. it guarantees you know what you are returning, it tells the reader what is being returned and it avoids bugs. one classic bug is some code that returns the last expression and someone adds code after that breaking the return. another bug is when the last statement is some compound thing like if/else and it may return the right thing but it is hard to tell what is going on. and as the docs say a loop control will be unspecified in what it returns. so use explicit return statements to avoid all of these issues. simple and important. there are some special cases where no return statement may be better. i won't go into those now. uri -- Uri Guttman ------ u...@stemsystems.com -------- http://www.sysarch.com -- ----- Perl Code Review , Architecture, Development, Training, Support ------ --------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com --------- -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/