This has been an interesting thread so out of curiosity I happened to check on the bug report. According to Dave Mitchell:
Thanks for the report.
This is fixed in perl 5.9.5 onwards, probably by change #31203.
PL_in_my wasn't being re-initialised at the start of the eval, so
'$string' was being misinterpreted as 'my $string'.