In the last 6 months I have come to feel that understanding Perl
contexts is the most important and difficult thing in the language, so
your statement and question very important....

>     I don't see the point of the subroutine. If
> you want to return a hash from a subroutine,
> use 'return'. Note that foo() actually returns
> a list (or is it an array?). We decide to stuff
> the result into a hash.
> 

It returns a "list" because of exactly what you said in your last
sentence, "We decide to stuff the result...", so it is a list until you
have decided what to stuff it into, which could be a 

'list' of scalars
($scalara, $scalarb) = foo();

array slice
@array[ 3 .. 4] = foo();

hash slice
@hash{ 'key1', 'key2' } = foo();

arguments to a loop
foreach ( foo() );

arguments to another sub
bar(  foo()  );

or just an 'array'
@array = foo();

etc.

A square is a rectangle, but a rectangle is not necessarily a square. 
An array is a list, but a list is not necessarily an array.

http://danconia.org

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


Reply via email to