Okay, I figured it was some peephole optimization thing. This is not what I would have predicted for deparse output, but it kind of makes sense.
$ perl -MO=Deparse -e 'sub foo { 1 for 1 } foo'
sub foo {
foreach $_ (1) {
'???';
}
}
foo ;
-e syntax OK
The
'???' appears for other constants, with which it would generate "useless use of constant in void context" warnings. This warning is suppressed for a few common constants. So I guess the opcode optimizer just forgets WHAT constant was there.
--
[ e d @ h a l l e y . c c ]