Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Re: uninitialized value in phonebook program

by smgfc (Monk)
on Feb 25, 2002 at 04:49 UTC ( [id://147265]=note: print w/replies, xml ) Need Help??


in reply to Re: uninitialized value in phonebook program
in thread uninitialized value in phonebook program

when you change the code to print out the values of $name, $1, and $2:
foreach $name (keys %book) { #write the data print "$name \n"; $name =~ /(.+)&(.+)/; print "$1, $2 \n"; if ($2 =~ /^0$/) { print BOOK "$1,::"; } else { print BOOK"$1,$2::"; } for ( 0 .. $#{ $book{$name} } ) { print BOOK $def[$_+2] . ":" . $book{$name}[$_] . "::" unless +$book{$name}[$_] =~ /^0$/; } print BOOK "\n"; }
you get the correct output, and it shows $1 and $2 are initialized, but you still get the uninitialized error. Here is the output when you pass it School&0 and one number:

school&0

school, 0 
# Use of uninitialized value, <> chunk 7.
File 'untitled:Desktop Folder:Will's Stuff:Applications:MacPerl ƒ:phonebook'; Line 57
so that isnt the problem. Loop lables are a good idea, though, thanks

Replies are listed 'Best First'.
Re: Re: Re: uninitialized value in phonebook program
by chipmunk (Parson) on Feb 25, 2002 at 05:09 UTC
    Oh, now I got it! The warning is not actually coming from the if ($2 =~ /^0$/) { line. Unfortunately, perl sometimes reports the line number where an if block starts when the warning actually occurs later in the block. That's what is happening here.

    First, you perform a regex match against $name, setting $1 and $2. Then, you perform a regex match against $2. So far, so good. Then you print out the values of $1 and $2. Oops! That second regex match you just did has wiped out the values of $1 and $2!

    jeffa's node shows two ways to solve this problem. Either assign the results of the first match to new variables: my($first, $last) = $name =~ /(.+)&(.+)/; Or replace the second match with a comparison: if ($2 eq '0') {

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://147265]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2024-03-29 11:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found