perl 5.0 alpha 2
[p5sagit/p5-mst-13.2.git] / match_stuff
1     len = sv->sv_cur;
2     e = sv->sv_ptr + len;
3     if (delim == '\'')
4         d = e;
5     else
6         d = sv->sv_ptr;
7     for (; d < e; d++) {
8         if (*d == '\\')
9             d++;
10         else if ((*d == '$' && d[1] && d[1] != '|' && d[1] != ')') ||
11                  (*d == '@')) {
12             lex_stuff = newSVsv(sv);
13             d = scan_ident(d,bufend,buf,FALSE);
14             (void)gv_fetchpv(buf,TRUE);         /* make sure it's created */
15             for (; d < e; d++) {
16                 if (*d == '\\')
17                     d++;
18                 else if (*d == '$' && d[1] && d[1] != '|' && d[1] != ')') {
19                     d = scan_ident(d,bufend,buf,FALSE);
20                     (void)gv_fetchpv(buf,TRUE);
21                 }
22                 else if (*d == '@') {
23                     d = scan_ident(d,bufend,buf,FALSE);
24                     if (strEQ(buf,"ARGV") || strEQ(buf,"ENV") ||
25                       strEQ(buf,"SIG") || strEQ(buf,"INC"))
26                         (void)gv_fetchpv(buf,TRUE);
27                 }
28             }
29             pm->op_pmflags |= PMf_RUNTIME;
30             goto got_pat;               /* skip compiling for now */
31         }
32     }
33     if (pm->op_pmflags & PMf_FOLD)
34         StructCopy(pm, &savepm, PMOP);
35     scan_prefix(pm,sv->sv_ptr,len);
36     if ((pm->op_pmflags & PMf_ALL) && (pm->op_pmflags & PMf_SCANFIRST)) {
37         fbm_compile(pm->op_pmshort, pm->op_pmflags & PMf_FOLD);
38         pm->op_pmregexp = regcomp(sv->sv_ptr,sv->sv_ptr+len,
39             pm->op_pmflags & PMf_FOLD);
40                 /* Note that this regexp can still be used if someone says
41                  * something like /a/ && s//b/;  so we can't delete it.
42                  */
43     }
44     else {
45         if (pm->op_pmflags & PMf_FOLD)
46             StructCopy(&savepm, pm, PMOP);
47         if (pm->op_pmshort)
48             fbm_compile(pm->op_pmshort, pm->op_pmflags & PMf_FOLD);
49         pm->op_pmregexp = regcomp(sv->sv_ptr,sv->sv_ptr+len,
50             pm->op_pmflags & PMf_FOLD);
51         hoistmust(pm);
52     }
53   got_pat: