おもろいな。perl5.004でも起きた。5.003ではparse error。
さらに

perl -le 'print &{sub { if(1) { do {$foo=3}}}};' これも空表示になるが、
perl -le 'print &{sub { if(1) { do {$foo=3}}}}; print $foo' は 3 が表示される。

奥が深い…