Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Error messages point to wrong line number in if-elsif construct

by Sandy (Curate)
on Dec 21, 2004 at 22:02 UTC ( #416633=perlquestion: print w/ replies, xml ) Need Help??
Sandy has asked for the wisdom of the Perl Monks concerning the following question:

This really isn't a question, and I'm not sure if it is the correct place to post, but nonetheless...

While looking at node Resetting variables I was mislead by the line number of the error message.

It appears that when there is an if(){...}elsif(){...} construct that contains an error with the elsif part, the line number points to the line of the if statement.

Examples are better than words:

use strict; use warnings; # demonstration of error message my $test = ""; my $abc = "abc"; if ($abc =~ /xyz/) { # <- LINE 7 print "nothing\n"; } #elsif ($abc =~ /[$test]/) { if ($abc =~ /[$test]/) { # <- LINE 11 print "passed 1st condition\n"; }
Result ... error is at line 11 ...
Unmatched [ before HERE mark in regex m/[ << HERE ]/ at D:\try3.pl lin +e 11.

But

use strict; use warnings; # demonstration of error message my $test = ""; my $abc = "abc"; if ($abc =~ /xyz/) { # <- LINE 7 print "nothing\n"; } elsif ($abc =~ /[$test]/) { #if ($abc =~ /[$test]/) { # <- LINE 11 print "passed 1st condition\n"; }
Result ... error is at line 7 ...
Unmatched [ before HERE mark in regex m/[ << HERE ]/ at D:\try3.pl lin +e 7.

Very confusing. I haven't seen any documentation on this behaviour.

Sandy

Comment on Error messages point to wrong line number in if-elsif construct
Select or Download Code
Replies are listed 'Best First'.
Re: Error messages point to wrong line number in if-elsif construct
by cchampion (Curate) on Dec 21, 2004 at 22:29 UTC

    Have a look at if-elsif weirdness (and the explanation at Re: if-elsif weirdness) where the same issue was addressed some time ago.

    It looks like it's either a well known bug or a behavior which most of the people are happy living with. :)

Re: Error messages point to wrong line number in if-elsif construct
by gaal (Parson) on Dec 21, 2004 at 22:32 UTC
Re: Error messages point to wrong line number in if-elsif construct
by ikegami (Pope) on Dec 21, 2004 at 22:31 UTC
    elsif doesn't start a statement. It's part of an if statement. In this case, it's telling you that the error is in the statement that started at line 7. I don't know why it's not more precise, but I'm sure changing it would involve extreme changes to perl's guts.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://416633]
Approved by Old_Gray_Bear
Front-paged by dbwiz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2015-07-29 10:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls