From bac662eeb2cdce47175319fe613f5779e780f517 Mon Sep 17 00:00:00 2001 From: SADAHIRO Tomoyuki Date: Sun, 18 Jan 2004 04:59:55 +0900 Subject: Re: open/or inconsistency Message-Id: <20040117195729.623A.BQW10602@nifty.com> (plus a test.) Don't produce the warning for constructs like open my $fh, $file or die; p4raw-id: //depot/perl@22170 --- op.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'op.c') diff --git a/op.c b/op.c index b39d81ee30..d53b1307be 100644 --- a/op.c +++ b/op.c @@ -1865,19 +1865,27 @@ Perl_localize(pTHX_ OP *o, I32 lex) && PL_bufptr > PL_oldbufptr && PL_bufptr[-1] == ',') { char *s = PL_bufptr; - int sigil = 0; + bool sigil = FALSE; /* some heuristics to detect a potential error */ - while (*s && (strchr(", \t\n", *s) - || (strchr("@$%*", *s) && ++sigil) )) + while (*s && (strchr(", \t\n", *s))) s++; - if (sigil) { - while (*s && (isALNUM(*s) || UTF8_IS_CONTINUED(*s) - || strchr("@$%*, \t\n", *s))) - s++; - if (*s == ';' || *s == '=') - Perl_warner(aTHX_ packWARN(WARN_PARENTHESIS), + while (1) { + if (*s && strchr("@$%*", *s) && *++s + && (isALNUM(*s) || UTF8_IS_CONTINUED(*s))) { + s++; + sigil = TRUE; + while (*s && (isALNUM(*s) || UTF8_IS_CONTINUED(*s))) + s++; + while (*s && (strchr(", \t\n", *s))) + s++; + } + else + break; + } + if (sigil && (*s == ';' || *s == '=')) { + Perl_warner(aTHX_ packWARN(WARN_PARENTHESIS), "Parentheses missing around \"%s\" list", lex ? (PL_in_my == KEY_our ? "our" : "my") : "local"); -- cgit v1.2.1