return $foo; returns the value in $foo. It doesn't return the $foo variable. return bar(); returns the value(s) returned by bar(). So return @array; returns the values from @array. return $foo ? $bar : $baz; doesn't return a ternary operator. return returns a list of zero or more (scalar) values. Always.

But would we say that an array is a list or a scalar?

An array is a (type of) list, sure. Alternately, an array is something that holds a list such that you can manipulate the list.

And if we say that an array is a list, how do we explain how it behaves differently from a list in scalar context?

There's that broken meme again. There is no particular way that a "list" behaves in scalar context. Any number of ways of producing a list of scalar values (which is the "list" that an array contains) can have any number of different behaviors in a scalar context. A "list literal" aka "use of the comma operator, usually between parens", evaluates all but the last expression in void context and then evaluates the last expression in scalar context and returns the resulting scalar. A "list literal" doesn't even return the last value. So the answer to "What does a list return in a scalar context?" is, of course, "Mu!".

The term "list" can mean quite a few quite different things when talking about Perl. The two most common are "list of scalar values" and "list literal" (use of comma). So it makes little sense to talk categorically about what a "list" does.

The dicotomy "array or list" is a false one in Perl, despite it being fairly widely ascribed to. An array is a list.

- tye        


In reply to Re^5: Evil Interview Questions (memes) by tye
in thread Evil Interview Questions by kyle

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.