in reply to RFC: Context tutorial
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.
|
|---|