I'm interested to understand why the '|' math operation decided to return a 3 for me, when given two non-numbers to operate on. This was the fun part.
(3,4,5) | (7,8,9) === ((3,4),5) | ((7,8),9) === (4,5) | ((7,8),9) === 5 | ((7,8),9) === 5 | (8,9) === 5 | 9 === 13
It's a common misconception that (..., ..., ...) is a list. It's simply two instances of the binary operator ",". In list context, "," returns a list consisting of both operands (which are evaluated in list context). In scalar context, "," returns its RHS operand (after evaluating both sides in scalar context).
Is there a way to write this that will work for both empty and non-empty canvas?
Close. Since you're dereferencing ("@{}") the result of the "||", you need to return an array reference on both sides of the "||".
my @list2 = @{ $c->bbox('all') || [ 1,2,3 ] };
Or if you want to avoid creating an array and a reference to it just so it can be derefenced and listed,
my @list2 = $c->bbox('all'); @list2 = (1,2,3) if !@list2;
In reply to Re^3: 'or' versus '||' - Unexpected Results
by ikegami
in thread 'or' versus '||' - Unexpected Results
by cmv
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |