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 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;

  # because I use them even when I write simple examples

  my $x = 3 & 4;
  $x |= 42;

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.


Perl tutorial

For further articles see the Perl tutorial.

Published on 2011-07-13 by Gabor Szabo

In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation.
blog comments powered by Disqus


Google Plus Twitter RSS feed