> 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. Thanks! - Bryan -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/