diff options
author | Yves Orton <demerphq@gmail.com> | 2007-01-12 03:31:12 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2007-01-15 16:26:17 +0000 |
commit | cde0cee5716418bb58782f073048ee9685ed2368 (patch) | |
tree | c2a691ebb8348e48a5171a60b617299632146e12 /toke.c | |
parent | 780a5241a93925d81e932db73df46ee749b203b9 (diff) | |
download | perl-cde0cee5716418bb58782f073048ee9685ed2368.tar.gz |
Add support for /k modfier for matching along with ${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}
Message-ID: <9b18b3110701111731x29b1c63i57b1698f769b3bbc@mail.gmail.com>
(with tweaks)
p4raw-id: //depot/perl@29831
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 28 |
1 files changed, 12 insertions, 16 deletions
@@ -10763,20 +10763,16 @@ void Perl_pmflag(pTHX_ U32* pmfl, int ch) { PERL_UNUSED_CONTEXT; - if (ch == 'i') - *pmfl |= PMf_FOLD; - else if (ch == 'g') - *pmfl |= PMf_GLOBAL; - else if (ch == 'c') - *pmfl |= PMf_CONTINUE; - else if (ch == 'o') - *pmfl |= PMf_KEEP; - else if (ch == 'm') - *pmfl |= PMf_MULTILINE; - else if (ch == 's') - *pmfl |= PMf_SINGLELINE; - else if (ch == 'x') - *pmfl |= PMf_EXTENDED; + if (ch<256) { + char c = (char)ch; + switch (c) { + CASE_STD_PMMOD_FLAGS_PARSE_SET(pmfl); + case 'g': *pmfl |= PMf_GLOBAL; break; + case 'c': *pmfl |= PMf_CONTINUE; break; + case 'o': *pmfl |= PMf_KEEP; break; + case 'k': *pmfl |= PMf_KEEPCOPY; break; + } + } } STATIC char * @@ -10786,7 +10782,7 @@ S_scan_pat(pTHX_ char *start, I32 type) PMOP *pm; char *s = scan_str(start,!!PL_madskills,FALSE); const char * const valid_flags = - (const char *)((type == OP_QR) ? "iomsx" : "iogcmsx"); + (const char *)((type == OP_QR) ? "iomsxk" : "iogcmsxk"); #ifdef PERL_MAD char *modstart; #endif @@ -10887,7 +10883,7 @@ S_scan_subst(pTHX_ char *start) s++; es++; } - else if (strchr("iogcmsx", *s)) + else if (strchr("iogcmsxk", *s)) pmflag(&pm->op_pmflags,*s++); else break; |