I encounted a strange problem with hash in Perl, I have write a tiny script to demostrate this problem:
and here is the executed result:#!/usr/bin/perl use strict; use warnings; my $heap = {}; $heap->{'172.16'} = 1; print "\$heap->{'172.16'}: $heap->{'172.16'}\n"; print "\$heap->{172.16}: $heap->{172.16}\n"; $heap->{'127.2'}{'127.1.0.2'} = 2; print "\$heap->{'127.2'}{'127.1.0.2'}: $heap->{'127.2'}{'127.1.0.2'}\ +n"; print "\$heap->{127.2}{127.1.0.2}: $heap->{127.2}{127.1.0.2}\n";
What surprise me is that $heap->{'127.2'}{'127.1.0.2'} is not the same as $heap->{127.2}{127.1.0.2}.$heap->{'172.16'}: 1 $heap->{172.16}: 1 $heap->{'127.2'}{'127.1.0.2'}: 2 Use of uninitialized value in concatenation (.) or string at /home/lar +ry/project/sysmonitor/test/testHash2.pl line 28. $heap->{127.2}{127.1.0.2}:
Can anyone give some tips?
In reply to What's the difference between $heap->{127.2}{127.1.0.2} and $heap->{'127.2'}{'127.1.0.2'} ? by sunshine_august
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |