sendrahiok has asked for the wisdom of the Perl Monks concerning the following question:

I was making great progress with my first attempt using Perl but have come across an uninitialized value problem.

I've distilled the issue down to the following code. I define a hash with 1 pair, ask the user to input a number. Then the hash is undef.

I'm using a fresh strawberry install and run it from the cmd line in Win 7 using 'perl filename.pl'

#! /usr/bin/perl use feature ':5.10'; use strict; use warnings; #define a hash my %p = ("1","Rekjavik"); #check it's there (returns "Rekjavik") say $p{1}; #ask for input from user (user inputs the number 1) my $t = <>; #the hash has disappeared! (returns undef) say $p{$t};

Replies are listed 'Best First'.
Re: Hash becomes uninitalized without warning... with warning
by wind (Priest) on Apr 13, 2011 at 21:32 UTC
      That's fantastic. My hat goes off to you. Thanks for the help.
Re: Hash becomes uninitalized without warning... with warning
by ww (Archbishop) on Apr 13, 2011 at 22:07 UTC

    No, the hash hasn't disappeared.

    As wind's reply shows, if the input, $t is 1, you'll get Rekjavik back... but consider what happens if the input is "2," "3" or "42."

    say $p{$t};
        is the same thing as
    say $p{1};
        when the input is "1" but if you wish to extend your hash with a new key-value pair you'll have to add instructions to do so.
      I think he was wondering why, when input a value of "1", at the terminal, it wasn't matching his data value.

      I don't think he was trying to handle cases asking for the answer of everything -- just trying to get a basic understanding of why his test case wasn't working, in what would seem to many new perl programmers, to be such a simple case! And who among us haven't been bitten by that simple newline more than once! :-)

Re: Hash becomes uninitalized without warning... with warning
by Anonymous Monk on Apr 14, 2011 at 15:50 UTC

    A beautiful first post, with actual thought put into the problem and question!

    Maybe the human race isn't doomed after all :)