My comment was not right.
See better explanation below.
&WNOHANG is a deprecated syntax, but still works.
Yes, & is Perl bitwise operator.
I consider it bad form to "AND" a constant with itself. Omit the &.
Update: As a matter of style, I would omit the & in front of WNOHANG. In 'C' that is the way that is is done. I am surprised that you can put & in front of WNOHANG, but ok it is obviously true that in Perl you can. Do as you will, I would not put that & there. | [reply] |
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
| [reply] [d/l] [select] |
The main point is that the "&" is not required. We agree that WNOHANG should be a bare word (its like that in 'C'). I do thank you for the Perl explanation!
| [reply] |
| [reply] |
Yes, & is Perl bitwise operator.
I consider it bad form to "AND" a constant with itself. Omit the &.
FWIW, doing/advising something without understanding the reasons is called cargo-culting.
As Eliya eloquently explained, bad style is not the same as wrong syntax :)
| [reply] |