While I agree the & isn't needed here, it's not the bitwise operator in this case. That would require two operands — to bitwise "and" something with itself you'd have to write e.g. 42 & 42.
Rather, the & here is the subroutine sigil. While it was required in the early days of Perl, it's optional these days, and its use is discouraged except for special purposes, such as to take a reference of a subroutine (\&foo), or to circumvent prototypes (see perlsub).
And the latter is also the reason you shouldn't use & with constants: constants are subroutines with an empty prototype, which makes Perl optimize the function call away. Telling Perl to circumvent the prototype is not a good idea as it prevents the optimization:
$ perl -MO=Concise -e 'sub foo(){42}; print foo'
6 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 2 -e:1) v:{ ->3
5 <@> print vK ->6
3 <0> pushmark s ->4
4 <$> const[IV 42] s ->5
-e syntax OK
$ perl -MO=Concise -e 'sub foo(){42}; print &foo'
8 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 2 -e:1) v:{ ->3
7 <@> print vK ->8
3 <0> pushmark s ->4
6 <1> entersub[t2] lK/TARG,AMPER,1 ->7
- <1> ex-list lK ->6
4 <0> pushmark s ->5
- <1> ex-rv2cv sK/8 ->-
5 <#> gv[*foo] s ->6
-e syntax OK
|