On Tue, Feb 01, 2005 at 11:15:46AM -0600, [EMAIL PROTECTED] 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. Ronald