From cde0cee5716418bb58782f073048ee9685ed2368 Mon Sep 17 00:00:00 2001 From: Yves Orton Date: Fri, 12 Jan 2007 03:31:12 +0100 Subject: 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 --- toke.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'toke.c') diff --git a/toke.c b/toke.c index f9f0627121..dcbf3d6360 100644 --- a/toke.c +++ b/toke.c @@ -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; -- cgit v1.2.1