in reply to Precendence and wantarray puzzling me
You got (1)? That would be a bug. I get an empty list, as I expect. foo() returns an empty list, which is assigned to @thingies. bar() is called, but its result is discarded.my @thingies = foo() or bar(); warn @thingies; # Expected (3,4) here, got (1)
And rightly so. This is exactly the same expression as the first one. The parens are for precedence only, and a fairly trivial one.my @thingies = ( foo() ) or ( bar() ); warn @thingies; # Expected (3,4) here too, got ()
however, with or, why doesn't the first sub get called in list context, return false with the empty list, and let the second sub get called?But this is exactly what is happening! Perhaps you don't realize the difference between or and ||: precedence. or has a low precedence, lower than assignment. Perhaps you want:
my @thingies = foo (); @thingies = bar () unless @thingies;
Abigail
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Precendence and wantarray puzzling me
by BUU (Prior) on Mar 04, 2004 at 20:59 UTC | |
by Abigail-II (Bishop) on Mar 04, 2004 at 21:27 UTC |