http://www.perlmonks.org?node_id=564833


in reply to Secret Perl Operators: the boolean list squash operator, x!!

Totally ++. This is both brilliant and scary.

However, it's so unusual that I think it would be hard to follow -- more so than many other idioms. I think I'd put a space into it rather than treat it as an "operator":

( 'admin' ) x !!$is_admin_link,

I think that will be more intelligible to those who aren't familiar with the idiom.

Also, because of the way this works for arrays, you might want to call this the "()x!!" operator -- though a pithy visual metaphor escapes me. Consider:

use strict; use warnings; my $cond = 0; my @foo = 'foo'; my @bar = ( 'bar', @foo x !!$cond, 'baz' ); print join(q{,},@bar), "\n"; @bar = ( 'bar', (@foo) x !!$cond, 'baz' ); print join(q{,},@bar), "\n";

Result:

bar,,baz bar,baz

Teaching people to always use the () may save them from expected results.

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.