Returning undef for false is more broken than returning empty lists for false. At least an empty list is easily promoted to a false or undef value but an undef value in a list is not as easily demoted to a false value. I think all the people returning undef for false are shortsighted and I hope they never get their hands on my code.
sub empty {} if ( empty() ) { ... } # ok @foo = empty(); if ( @foo ) { ... } # ok sub returns_undef { undef } if ( returns_undef() ) { ... } # ok @foo = returns_undef(); if ( @foo ) { ... } # NOT OK if ( grep { defined } @foo ) { ... } # oh ok, now it's "better".
⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊
In reply to Re^4: Value of a statement with modifier
by diotalevi
in thread Value of a statement with modifier
by Jenda
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |