]> git.vpit.fr Git - perl/modules/re-engine-Plugin.git/blobdiff - t/50-num_buff/FETCH.t
Teach t/50-num_buff/*.t about perl 5.17.4 and newer
[perl/modules/re-engine-Plugin.git] / t / 50-num_buff / FETCH.t
index 39d3f6ce3cc08fe7740bfd99fc01b30aa83af022..4c2ab04abb381211510de8635bc611bc39e4f1b3 100644 (file)
@@ -1,6 +1,25 @@
 use strict;
 use Test::More tests => 7;
 
+
+my %rx_idx;
+BEGIN {
+    %rx_idx = (
+        q[$`] => -2,
+        q[$'] => -1,
+        q[$&] => 0,
+    );
+    if ("$]" >= 5.017_004) {
+        $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[$&]};
+    }
+}
+
 use re::engine::Plugin (
     exec => sub {
         my $re = shift;
@@ -9,13 +28,25 @@ use re::engine::Plugin (
             FETCH => sub {
                 my ($re, $paren) = @_;
 
-                my %ret = (
-                    -2 => 10,
-                    -1 => 20,
-                     0 => 30,
-                     1 => 40,
+                my %exp = (
+                    q[$`]            => 10,
+                    q[${^PREMATCH}]  => 10,
+                    q[$']            => 20,
+                    q[${^POSTMATCH}] => 20,
+                    q[$&]            => 30,
+                    q[${^MATCH}]     => 30,
+                    1                => 40,
                 );
 
+                my %ret;
+                for (keys %exp) {
+                    if (exists $rx_idx{$_}) {
+                        $ret{$rx_idx{$_}} = $exp{$_};
+                    } else {
+                        $ret{$_}          = $exp{$_};
+                    }
+                }
+
                 $ret{$paren};
             }
         );
@@ -26,10 +57,10 @@ use re::engine::Plugin (
 
 "a" =~ /a/;
 
-is($`, 10, '$`');
-is(${^PREMATCH}, 10, '${^PREMATCH}');
-is($', 20, q($'));
+is($`,            10, '$`');
+is(${^PREMATCH},  10, '${^PREMATCH}');
+is($',            20, q($'));
 is(${^POSTMATCH}, 20, '${^POSTMATCH}');
-is($&, 30, '$&');
-is(${^MATCH}, 30, '${^MATCH}');
-is($1, 40, '$1');
+is($&,            30, '$&');
+is(${^MATCH},     30, '${^MATCH}');
+is($1,            40, '$1');