in reply to Weird behaviour with match-time code evaluation and backtracking

In stead of:
my @chars = split( //, $in ); foreach my $char (@chars) { $check += ord($char); }
You could use:
$check += ord $_ for split //, $in;
But to your question, I don't know. I think I read an explanation once by Dominus, on the mailing list to his superb book Higher Order Perl (which I highly recomend!)

Edit: In light of BrowserUk's response below, it's unlikely that this is related to the explanation I mentioned above. Sorry for confusing...