Think about Loose Coupling | |
PerlMonks |
Re^5: Evil Interview Questions (memes)by tye (Sage) |
on Feb 10, 2008 at 00:28 UTC ( [id://667219]=note: print w/replies, xml ) | Need Help?? |
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 Section
Meditations
|
|