+ -
当前位置:首页 → 问答吧 → %hash 第一个是空值,大手们指教

%hash 第一个是空值,大手们指教

时间:2010-09-20

来源:互联网

my @ip1;
my %hash1;
my $i=1;
while($i<254)
{
    $ip1[$i]="172\.16\.64\.$i";
  
# print "$ip1[$i]=abc\n";
  
      $i++;
}
#exit;
print $#ip1."\n";
foreach my $ip(@ip1)
{
      $hash1{$ip}=&passwd_sub;
}
@values=values %hash1;
  my $j=1;
foreach $key (sort (keys %hash1))
{
    print "$key=$j\n";
    $j++;
#    print "IP: $key \t PASS: $hash1{$key} \n";
}



结果:::::::::::::::::
=1                                                 这里第一个为什么有个空值呢。。想不明
172.16.64.1=2
172.16.64.10=3
172.16.64.100=4
172.16.64.101=5
172.16.64.102=6
172.16.64.103=7
172.16.64.104=8
172.16.64.105=9
172.16.64.106=10
172.16.64.107=11
172.16.64.108=12
172.16.64.109=13
172.16.64.11=14
172.16.64.110=15
172.16.64.111=16
172.16.64.112=17
172.16.64.113=18
172.16.64.114=19
172.16.64.115=20
172.16.64.116=21
172.16.64.117=22
-- More  --

作者: xiaoone   发布时间: 2010-09-20

顶上去

作者: xiaoone   发布时间: 2010-09-20

回复 xiaoone


    $i=1

作者: yybmsrs   发布时间: 2010-09-20

@ip1 是从1开始赋值的
perl的数组下标从0开始
$ip1[0]是空导致的吧

作者: 99超人   发布时间: 2010-09-20



QUOTE:
my @ip1;
my %hash1;
my $i=1;
while($i
xiaoone 发表于 2010-09-20 17:21



my $i=1;

my $i=0;

作者: shangat   发布时间: 2010-09-20

超人一针见血啊,呵呵
  1. my $i=1;
  2. while($i<254)
  3. {
  4.     $ip1[$i]="172\.16\.64\.$i";
  5.     #这里对@ip的赋值是从$ip1[1]开始,这样$ip1[0]未定义
  6.   
  7. # print "$ip1[$i]=abc\n";
  8.   
  9.       $i++;
  10. }
  11. #exit;
  12. print $#ip1."\n";
  13. foreach my $ip(@ip1)  #foreach会从$ip[0]开始给$ip赋值
  14. {
  15.       $hash1{$ip}=&passwd_sub;
  16. }
复制代码

作者: 珞水的大叔   发布时间: 2010-09-20

感谢哥们。
一时手误了。

作者: xiaoone   发布时间: 2010-09-20