From: Bryan R Harris <[EMAIL PROTECTED]> > > Bryan R Harris wrote: > >> > >> John W. Krahn wrote: > >>> > >>> Bryan R Harris wrote: > >>>> > >>>> John W. Krahn wrote: > >>>>> > >>>>> The left hand side of the assignment determines context so the @l2r{...} > >>>>> part. > >>>> > >>>> That strikes me as odd... When perl goes to populate @l2r{"a","b"}, it > >>>> seems to me that it would go through this process: > >>>> > >>>> - I have a slice here, so I'll loop over the slice elements > >>>> - The first is "a", so I'll pull a scalar off the list and assign it to > >>>> $l2r{"a"} > >>>> - The second is "b", so I'll pull another scalar off the list and assign > >>>> it > >>>> to $l2r{"b"} > >>>> - Remaining scalars in the list are discarded > >>> > >>> Correct, except for the loop part. > >>> > >>>> Why would $l2r{"a"} here be considered list context? > >>> > >>> It isn't, unless it's written as ( $l2r{"a"} ), then it's a list with > >>> one element. > >> > >> So I still don't understand what about @l2r{"a","b"} makes it evaluate the > >> first (<FILE>... in list context instead of scalar context. > > > > The '@' sigil at the front of the variable name says that it is either > > an array or a slice and so it forces list context on the right hand side > > of the assignment. > > I think it finally clicked! > > It makes more sense to me that (<FILE>,<FILE>) is kind of the same thing as > saying (@a,@b). In list context @a returns the array as a list, but in > scalar context @a returns the number of elements. Obviously (@a,@b) returns > the union of the two lists, not two scalars. "<FILE>" is treated the same > way.
Almost. It still depends on the left hand side. Try this: @a = (10,20,30); @b = (40,50,60); $s = (@a,@b); print "$s\n"; #versus ($s) = (@a,@b); print "$s\n"; In the first case the @a and @b are evaluated in scalar context. Even though they are enclosed in braces. Jenda ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes to wine, women and song, wizards are allowed to get drunk and croon as much as they like. -- Terry Pratchett in Sourcery -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/