I can no longer replicate this bug with either bleadperl (compiled with
VC++ 8.0 or borland), or with ActiveState Perl 5.8.8 .
This problem is not fixed; it still happens with 5.8.8 and blead. It only
happens when you store your script with CRLF line endings, so maybe that
is the reason you couldn't reproduce it anymore.
You'll see this error with the t/op/readline.t test in blead too, if you
convert the bleadperl sources to Windows line-endings first.
The backticks are triggering the issue because they will flush all
filehandles. You'll see that the internal fileposition for the DATA
handle is wrong; you can replace the backticks with the following line
to achieve the same effect:
seek(DATA, tell DATA, 0);
which should have been a no-op.
I was thinking about another way to fix this: Defining the
PERL_TEXTMODE_SCRIPTS preprocessor variable to always open scripts in
text mode. This breaks ByteLoader, but that doesn't matter because
ByteLoader is no more. However, it might also break source filters
storing binary data in the __DATA__ section, so it may still not be safe
for blead. It does not break any tests in blead though. :)
Cheers,
-Jan