I'am an avid user of 'strict' however yesterday it cost me a lot of time. Was debugging a program, that distilled to the essentials, looks like:
#!/usr/bin/perl -w use strict; my $a = "foo"; my $b = "bar"; my $c = undef; if ( $a =~ m/aa/ ) { } elsif ( $a =~ m/bb/ ) { } elsif ( $b =~ m/aa/ ) { } elsif ( $c =~ m/aa/ ) { } else { }
Run this and Perl will issue the warning:
that is, it claims there is something wrong withUse of uninitialized value in pattern match (m//) at ff.pl line 8
if ( $a =~ m/aa/ ) {
Of course in the actual code this was a _much_ more complex expressions with several variables. So I spent a lot of time studying the expression and find out what was wrong.
It turned out there is nothing wrong with the expression! The actual mistake is in:
elsif ( $c =~ m/aa/ ) {
but Perl reports it at the first if.
Just thought I share this so others can avoid doing the same.
Have fun.
2005-12-08 Retitled by g0n, as per Monastery guidelines
Original title: 'Confusing warning'
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Confusing warning with if/elsif/else
by fergal (Chaplain) on Dec 08, 2005 at 10:40 UTC | |
Re: Confusing warning with if/elsif/else
by demerphq (Chancellor) on Dec 08, 2005 at 10:27 UTC | |
by robin (Chaplain) on Dec 09, 2005 at 09:58 UTC | |
Re: Confusing warning with if/elsif/else
by Perl Mouse (Chaplain) on Dec 08, 2005 at 11:30 UTC | |
by sanPerl (Friar) on Dec 09, 2005 at 06:50 UTC | |
Re: Confusing warning with if/elsif/else
by radiantmatrix (Parson) on Dec 08, 2005 at 15:22 UTC | |
by gumpu (Friar) on Dec 08, 2005 at 18:03 UTC | |
Re: Confusing warning with if/elsif/else
by grinder (Bishop) on Dec 08, 2005 at 14:47 UTC | |
Re: Confusing warning with if/elsif/else
by spiritway (Vicar) on Dec 09, 2005 at 05:55 UTC |
Back to
Meditations