use List::Util 'first'; sub AND { ! first { !$_ } @_ } sub OR { !!first { $_ } @_ }