Avoid (unwanted) bitwise operators
A while ago I saw this in some code:
$x |= some_sub();
It is syntactically correct but it is almost sure to be a typo.
The recommended way (for lazy programmers) to assign default to a scalar variable is
$x ||= some_sub();
or, if you are using perl 5.10 or newer then the correct way is
$x //= some_sub();
using the defined-or operator.
Actually I think there are very few applications where bitwise operators are needed. It might be interesting to see which CPAN modules use them.
When I encountered this issue I started to write an e-mail to the developers of Perl::Critic asking for their help catching code that uses bitwise operators. I have not even finished the message when I saw a posting by Andy Lester about exactly the same issue. Except he already implemented a Perl Critic policy to check for this. Now, after almost two months finally I had time to try it. I installed Perl::Critic::Bangs.
Created a file called code.pl with the following content:
use strict; use warnings; my $x = 3 & 4; $x |= 42;
(I use strict and warnings even when I write simple examples.)
and ran perlcritic code.pl
This was the result
Use of bitwise operator at line 12, column 11. Use of bitwise operator "&". (Severity: 5) Use of bitwise operator at line 13, column 4. Use of bitwise operator "|". (Severity: 5)
Thank you Andy and thank all the developers of the Perl::Critic ecosystem.