in reply to Re^2: Need help from the esteemed monks on scoping/hashes
in thread Need help from the esteemed monks on scoping/hashes

You're accessing $mapping{$anet[0]} - did you ever assign to that key? Doesn't look like it . . .

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?

Replies are listed 'Best First'.
Re^4: Need help from the esteemed monks on scoping/hashes
by garbage777 (Acolyte) on Jun 05, 2006 at 17:30 UTC
    Hi Dragonchild, As per your advice, I just rechecked that in the script at line 27 (below is the snippet of the script with line number), I am assigning each key, value pairs to a hash called "%mapping". Please see below -
    24 if (/NAME_MAP/ .. /PORTS/) { 25 next if (/NAME_MAP/); 26 next if (/PORTS/); 27 %mapping = split; 28 @keys = sort keys %mapping; 29 foreach $k1 (sort keys %mapping) { 30 print "$k1 = $mapping{$k1}\n"; 31 } 32 }

    However, it looks like in the next block of the code beginning at line "if (/D_NET/){...", the hash "%mapping" is not visible with in the "if(/D_NET/){..." block of the script. Please help as I am a total noobeee with Perl. Thank you very much for all the suggestions. Best Regards, Dan.
      With %mapping = split; you are overwriting your old mapping. You should use something like
      my ( $key, $value ) = split; $mapping{ $key } = $value if defined( $key ) and defined( $value );
      to preserve previous mappings.