[tpm] dereferencing anonymous hashes

Uri Guttman uri at stemsystems.com
Tue Apr 10 14:32:52 PDT 2007

>>>>> "FH" == Fulko Hew <fulko.hew at gmail.com> writes:

  FH> because what fixed my problem was (transcribing correctly this time):

  FH> my %device = {};

that is STILL wrong. please enable warnings and it will barf out that
you are assigning an odd number of elements to a hash.

perl -lwe '%x = {}'
Name "main::x" used only once: possible typo at -e line 1.
Reference found where even-sized list expected at -e line 1.

hey, it is even more informative than it used to be.

  FH> $config{$cfg}{device} = \%device;
  FH> $device{$devid}{status} = 'OK';

you still have a hash ref as a key in %device. print it out with
Data::Dumper to see it.

  FH> ...

  FH> my %device = %{$config{$cfg}{device}};

that is doing a complete shallow copy of a hash. it will wipe out your
broken initializer (which you think is a clearing operation).

  FH> $status = $device{$devId}{status};

$devId is not the same as $devid. spelling matters in perl. if you
used strict you would have been told about that error.


Uri Guttman  ------  uri at stemsystems.com  -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs  ----------------------------  http://jobs.perl.org

More information about the toronto-pm mailing list