> Bryan R Harris wrote:
>>> From: Bryan R Harris <[EMAIL PROTECTED]>
>>>> Given an open filehandle, why don't these two things do the same thing?
>>>> 
>>>> **************************************
>>>> @l2r{"a","b"} = (<FILE>, <FILE>);
>>>> $c = <FILE>;
>>>> 
>>>> **************************************
>>>> $l2r{"a"} = <FILE>;
>>>> $l2r{"b"} = <FILE>;
>>>> $c = <FILE>;
>>>> 
>>>> **************************************
>>>> 
>>>> The first seems to be slurping the whole file into $l2r{"b"} and leaving $c
>>>> undefined...  The second does what I want.  Doesn't seem to make sense.
>>> Context. The <FILEHANDLE> returns a single line in scalar context and
>>> a list of all lines in a list context. And there is no such thing as
>>> a two-item-list context.
>>> 
>>> So in the first case the assignment to @l2r{"a","b"} provides a list
>>> context so the very first <FILE> reads all the lines left in FILE,
>>> the second and third return an empty list. The first two lists are
>>> concatenated together and the first two items of the resulting list
>>> are assigned to $l2r{"a"} and $l2r{"b"}. And the rest of the list is
>>> forgotten. You'd have to do something like
>>> 
>>> @l2r{"a","b"} = (scalar(<FILE>), scalar(<FILE>));
>>> or
>>> @l2r{"a","b"} = (<FILE>.'', <FILE>.'');
>>> 
>>> to ensure that the <FILE> is evaluated in scalar context.
>> 
>> 
>> Which part is forcing the list context?  The fact that the <FILE> is inside
>> parenthesis () or the @l2r{...} part?
> 
> 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

Why would $l2r{"a"} here be considered list context?

What am I missing?

- B

ps.  I'm often surprised at how little I seem to know even after 8 years of
perl scripting and monitoring this list...



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to