develooper Front page | perl.fwp | Postings from February 2005

Re: "Secret" operators

Thread Previous | Thread Next
Ronald J Kimball
February 1, 2005 09:37
Re: "Secret" operators
Message ID:
On Tue, Feb 01, 2005 at 11:15:46AM -0600, wrote:
> Can I get that just a little slower?
>  $b = () = /u/g;
> is the same as:
>    @a = /u/g;
>    $b = @a;
> I understand what happens, but it appears to be assigning to an empty list 
> - is that filling up the list, so to speak?  Or is it just that it makes 
> the 'result' of /u/g assign in array/list context and then that, assigned 
> in scalar context to $b gives the list/array count. 

It is assigning to an empty list.  A list assignment in scalar context
returns the number of elements on the right-hand side of the assignment.

You can assign two elements to a two-element list:

($foo, $bar) = (1, 2);

You can assign two elements to a one-element list:

($foo) = (1, 2);

You can even assign two elements to an empty list:

() = (1, 2);

In each case, any extra elements are simply discarded, but the result of
the assignment in scalar context is always the number of elements on the
right-hand side, even if some aren't actually assigned to variables.


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About