in reply to Re^3: reset particular variable
in thread reset particular variable
If you have a subroutine and you want to return "nothing" ...But my questions in Re^2: reset particular variable were in the context of a discussion of differences between the $var = (); and $var = undef; et al statements, differences I still don't see.
WRT the examples you give in Re^3: reset particular variable, I realize now that what you mean by 'nothing' is 'an empty list'. I see the difference between returning an empty list and returning a list consisting of a single item that is undef (an undefined something).
Also WRT Re^3: reset particular variable, you say In Perl you can't even just exit a sub. But if you do an explicit return; from a subroutine as opposed to an implicit return (i.e., falling off the end of the subroutine), then isn't the value returned always perfectly 'defined' semantically, dependent on the calling context of the subroutine? See examples below.
Other than documentary emphasis, is there any reason to prefer any of the other alternatves given below over a simple return; statement? (Actually, I seem to recall that there exists an obscure case in which return; and return (); differ materially, but I don't have time right now to follow it up.)
>perl -wMstrict -le "sub Sr { return } sub Se { return () } sub Sw { return wantarray ? () : undef } print q{'}, Sr, q{' '}, join(q{' '}, 0+Sr, ''.Sr), q{'}; print q{'}, Se, q{' '}, join(q{' '}, 0+Se, ''.Se), q{'}; print q{'}, Sw, q{' '}, join(q{' '}, 0+Sw, ''.Sw), q{'}; " Use of uninitialized value in addition (+) at -e line 1. Use of uninitialized value in concatenation (.) or string ... '' '0' '' Use of uninitialized value in addition (+) at -e line 1. Use of uninitialized value in concatenation (.) or string ... '' '0' '' Use of uninitialized value in addition (+) at -e line 1. Use of uninitialized value in concatenation (.) or string ... '' '0' ''
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: reset particular variable
by Marshall (Canon) on Aug 21, 2009 at 13:42 UTC | |
by Anonymous Monk on Aug 21, 2009 at 13:56 UTC | |
by Marshall (Canon) on Aug 21, 2009 at 15:09 UTC | |
by Anonymous Monk on Aug 22, 2009 at 00:39 UTC | |
by AnomalousMonk (Archbishop) on Aug 21, 2009 at 16:21 UTC | |
by Marshall (Canon) on Aug 21, 2009 at 23:31 UTC | |
by Anonymous Monk on Aug 22, 2009 at 00:55 UTC |