# from Hans Dieter Pearcey
# on Wednesday 12 May 2010 08:49:

>...just because it's not how arrays work anywhere else in Perl,

This is not about how arrays work, but how functions work.  See 
localtime(), caller(), each(), glob(), readline(), etc.

But then see sort() and split().

There are reasonable cases for context sensitivity, with some reasons 
better than others.  It's easy to wrongly think you've found a good use 
for it, and maybe even easier to get angry when it is used well but 
catches you off guard.

>but even the relatively simple "return an array in list context, or an
>arrayref in scalar context" ...

That might be simple, but no builtins do this, which seems to say 
something.  If you're still working with lists, you expect them to 
behave like lists, and not try to package themselves in a reference 
with postage to Cairo.  The only case where wantarray ? (@x) : [...@x] 
even has utility is in e.g. perl5i trying to allow method chaining on 
list objects without needing an explicit ->flatten, but that is just a 
horrible hack workaround to the lack of a "method" context IMO.  It 
might be worth the caveats, but that just makes it "good enough", not 
a "good idea".

>or because I have to remember 
> that even though I got an arrayref when I wrote '$foo = function()',
> I'll get a list back when I write 'bar(x => 1, y => function(), z =>
> 3)'.

perlfunc:
  "In general, they do what you want, unless you want consistency."

--Eric
-- 
Cult: A small, unpopular religion.
Religion: A large, popular cult.
-- Unknown
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------

Reply via email to