in reply to Use of uninitialized value in open second time but not first.

Here is a shorter reproducing script. I wrote it before I decided to google for this problem... :D
#!/usr/bin/perl -w use strict; foreach (0..1) { my $scalar; open my $h, ">", \$scalar; print "End of $_\n"; }
Similar to the OP, this generates a warning the second but not the first time through the loop.

But unlike the OP, it just fiddles with a my $h handle, not STDOUT or anything like that.

Similar to the OP, initializing with my $scalar = '' removes the warning, but isn't this a perl bug? Shouldn't $scalar be in the same state both times through the loop when it isn't initialized?