You're assuming code exists in isolation. I can't think of any code that needs the number of elements in a hash that would be unclear no matter how you spelled
0+keys(%h)
But that doesn't mean they're all equal.
The 0+ points out that something special is happening, whereas scalar() just looks like a function call. A function call that doesn't exist. There's not even an op for it.
The 0+ points out that a number is going to be returned, confirming what one might think keys is doing.
If you used scalar, they might not know exactly what it did but they'd have a direct pointer to documentation that would explain exactly what the intent of the code was.
I think they'd be better off reading the docs for keys, not scalar. The former lists the two possible return values for keys. The understanding of context will follow.
In reply to Re^3: Wrong result for "length keys %$hashref"?
by ikegami
in thread Wrong result for "length keys %$hashref"?
by samwyse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |