Mark Anderson wrote at Thu, 06 Jun 2002 18:48:32 +0200:

> I came across a reference to lvalue(s) in
>    perldoc -f substr
> I then searched perldoc for "lvalue", and looked at each reference in:
>    perldoc perldiag
>    perldoc perltoc
>    perldoc perlfunc
>    perldoc perlsub
>    perldoc perlop
>    perldoc perlguts
>    perldoc perlsyn
>    perldoc perlfaq7
>    perldoc perlfaq4
>    perldoc perlref
> 

Well, the documentation is a really a little bit hidden.
You can find it in perlsub.
Here are some lines from it:

 Lvalue subroutines

       WARNING: Lvalue subroutines are still experimental and the implementation may 
change in future versions of Perl.

       It is possible to return a modifiable value from a subroutine.  To do this, you 
have to declare the subroutine to
       return an lvalue.

           my $val;
           sub canmod : lvalue {
               $val;
           }
           sub nomod {
               $val;
           }

           canmod() = 5;   # assigns to $val
           nomod()  = 5;   # ERROR

       The scalar/list context for the subroutine and for the right-hand side of 
assignment is determined as if the subroutine
       call is replaced by a scalar. For example, consider:

           data(2,3) = get_data(3,4);

       Both subroutines here are called in a scalar context, while in:

           (data(2,3)) = get_data(3,4);

       and in:

           (data(2),data(3)) = get_data(3,4);

       all the subroutines are called in a list context.

    
Cheerio,
Janek

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to