+my %rx_idx;
+BEGIN {
+ %rx_idx = (
+ q[$`] => -2,
+ q[$'] => -1,
+ q[$&] => 0,
+ );
+ if ("$]" >= 5.019_004) {
+ # This should be the case since 5.17.4 but there's a bug in perl that
+ # was fixed in 5.19.4 which caused the FETCH callback to get the old
+ # indices.
+ $rx_idx{q[${^PREMATCH}]} = -5;
+ $rx_idx{q[${^POSTMATCH}]} = -4;
+ $rx_idx{q[${^MATCH}]} = -3;
+ } else {
+ $rx_idx{q[${^PREMATCH}]} = $rx_idx{q[$`]};
+ $rx_idx{q[${^POSTMATCH}]} = $rx_idx{q[$']};
+ $rx_idx{q[${^MATCH}]} = $rx_idx{q[$&]};
+ }
+}
+