It was fixed by the following commit, which is a more general fix than just %+:
in reply to Bizarro %+ hash slice bug in Perl 5.10 to 5.14.
Author: Father Chrysostomos <firstname.lastname@example.org>
Date: Wed Jan 4 23:28:54 2012 -0800
[perl #95548] Returned magical temps are not copied
return and leavesub, for speed, were not copying temp variables wi
refcount of 1, which is fine as long as the fact that it was not c
ied is not observable.
With magical variables, that *can* be observed, so we have to fore
the optimisation and copy the variable if itís magical.
This obviously applies only to rvalue subs.