A trap I have fallen into is forgetting that items in a list are themselves evaluated in list context.
This seems obvious when @a = (1, @b, @c), but not so obvious when print 1, reverse('olleh') or similarly in a subroutine call. (You mention print, but I think the problem is more general.) Nor so obvious in $a = { pkg => caller, ... }... Nor foo(1, m/q/) when the match fails.
You talk about operators affecting numbers and strings. Operators can also override context, eg @a+0 returns the number of elements in @a in any context. And cunning things like $year = (localtime)[5] + 1900 will evaluate localtime in list context.
The other edge case I've encountered is @a = 12 x 10, which doesn't yield an array of 10 elements, list context notwithstanding.
In reply to Re: RFC: Context tutorial
by gone2015
in thread RFC: Context tutorial
by kyle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |