Hi The term $map($some_string) actually means 2 scalar variables, one is $map and the other is $some_string. You get warning of uninitialized variable because $map is never declared before. The correct way to refer to a value in hash is $map{$some_string}. I think there is a typo in the book
Hope this help Billie "Sa" <[EMAIL PROTECTED]> ???????:[EMAIL PROTECTED] > Hi Everyone- > > I'm just starting to learn perl programing. I'm doing this through the > O'Reilly book: > Learning Perl. > > I seem to be stuck on hashes. I was doing the exercise in the back of > chapter 5. This program wants a hash with 3 keys and 3 values. It then asks > for a string. That string is then matched to a value and the value is > printed. My understanding of the exercise was to define the hash with the > three pairs (keys, values). Then ask for a key and print the value This is > the program I wrote: > > #!/usr/bin/perl -w > $map{"red"} = "apple"; > $map{"green"} = "grass"; > $map{"blue"} = "ocean"; > print "A string please: "; chomp ($some_string = <STDIN>); > print "The value for $some_string is $map($some_string)\n"; > > When I run it though I get the following complaint from perl: > > A string please: blue > Use of uninitialized value in concatenation (.) at ./key3.pl line 6, <STDIN> > line 1. > The value for blue is (blue) > > I thought Ok I messed up so I tried the answer in the back of the book which > was the following: > > #!/usr/bin/perl -w > %map = qw(red apple green leaves blue ocean); > print "A string please: "; chomp ($some_string = <STDIN>); > print "The value for $some_string is $map($some_string)\n"; > > This too gave me the same output from perl. > So here are my questions? > > 1.) What am I doing wrong here? > 2.) Is the only difference between a hash and an array is that the array > uses predetermined numerical keys for each value? > > Thanks in advance. > SA > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]