NAME
    Regexp::Keep - filter to allow the "\K" escape in regexes

SYNOPSIS
      use Regexp::Keep;

      # slow and inefficient
      my $r = "abc.def.ghi.jkl";
      $r =~ s/(.*)\..*/$1/;

      # fast and efficient
      my $s = "abc.def.ghi.jkl";
      $s =~ s/.*\K\..*//;

DESCRIPTION
    This allows you to use the "\K" escape in your regexes, which fools the
    regex engine into thinking it has only just started matching your regex.
    This means you can turn the inefficient replace-with-itself construct

      s/(save)delete/$1/;

    into the more efficient

      s/save\Kdelete//;

    construct.

IMPLEMENTATION
    What "\K" filters into is "(?{ Regexp::Keep::KEEP })", which is an XS
    function call embedded into the regex. The function sets
    "PL_regstartp[0]" to the current location in the string. This means that
    "$&" now starts where "\K" is seen. That means a replacement will begin
    being replaced there.

EXAMPLES
    Here's are short examples to show you the abilities of "\K":

      "alphabet" =~ /([^aeiou][a-z][aeiou])[a-z]/;
      # $1 is "pha", $& is "phab"

      "alphabet" =~ /\K([^aeiou][a-z][aeiou])[a-z]/;
      # $1 is "pha", $& is "phab"

      "alphabet" =~ /([^aeiou]\K[a-z][aeiou])[a-z]/;
      # $1 is "pha", $& is "hab"

      "alphabet" =~ /([^aeiou][a-z]\K[aeiou])[a-z]/;
      # $1 is "pha", $& is "ab"

      "alphabet" =~ /([^aeiou][a-z][aeiou])\K[a-z]/;
      # $1 is "pha", $& is "b"

      "alphabet" =~ /([^aeiou][a-z][aeiou])[a-z]\K/;
      # $1 is "pha", $& is ""

BUGS
    If you're using this module, you don't have a version of Perl with the
    "\K" escape built-in. For shame. Upgrade.

HISTORY
    0.01
        Original release.

AUTHOR
    Jeff "japhy" Pinyan, japhy@pobox.com

    http://www.pobox.com/~japhy/

SEE ALSO
    Regexp::Parts, the perlre manpage.