This is something like another bug someone posted recently (I guess in the cb since I can't find it anywhere). Combining them just for fun:
> perl -lwe '() = ($_ = "abc") =~ /(c)/; $_ = "def"; print eval <>'
Seems as if there's a pointer squirrled away somewhere deep in perl that was never removed just because it was never accessed. When there's not supposed to be anything there (and isn't in the normal place), somehow this shows through.
Could note, of course, that these needn't be considered bugs. Just because a program does something apparently semi-sensible for 'undefined behavior' doesn't mean one _has_ to beat on the poor thing till it stops. If this were any language but Perl one would expect the compiler/interpreter to simply throw up (or at least throw up its hands). In perl, it just gets tossed into the "Doctor it hurts when I do this. -- Then don't do that" bin.