+ -
当前位置:首页 → 问答吧 → 读取文件创建散列的问题

读取文件创建散列的问题

时间:2010-12-14

来源:互联网

文件file.txt
内容大概是这样的
172.24.138.21/web/apache-tomcat-6.0.13
172.24.138.22/web/apache-tomcat-6.0.13
172.24.138.23/web/apache-tomcat-6.0.13
172.24.138.139/web/apache-tomcat-6.0.13
172.24.138.140/web/apache-tomcat-6.0.13
172.24.138.141/web/apache-tomcat-6.0.13
172.24.138.142/web/apache-tomcat-6.0.13
172.24.138.143/web/apache-tomcat-6.0.13

现在想做个散列

   $hash=( "server" = ["172.24.138.21", "172.24.138.22", "172.24.138.23", ...... ])    #这边的数组读取文件的第一列

print $hash{server}  想要输出这些ip,这些ip做一个数组

要通过正则和循环自动创建填入散列, 请问要怎么实现???

作者: sai9924   发布时间: 2010-12-14

这是我的做法,对perl应用还不熟练,献丑啦
  1. #!/usr/bin/perl -w

  2. my @array;
  3. my %hash;
  4. open FH,"file.txt";
  5. while(1)
  6. {
  7. my $line =<FH>;
  8. if(not defined $line)
  9.    {
  10.     last;
  11.    }
  12. chomp $line;
  13. $line =~ /(\d+\.\d+\.\d+\.\d+)/;
  14. push @array, $1;
  15. }
  16. close FH;
  17. for(@array)
  18. {
  19. $hash{server}=$hash{server}."$_\n";
  20. }
  21. print $hash{server};
  22. ~                  
复制代码

作者: scrit   发布时间: 2010-12-14

  1. my %hash;
  2. while(<DATA>){
  3.         m<([^/]*)/>;
  4.         push @{$hash{server}}, $1;
  5. }
  6. print Dumper(\%hash);

  7. __DATA__
  8. 172.24.138.21/web/apache-tomcat-6.0.13
  9. 172.24.138.22/web/apache-tomcat-6.0.13
  10. 172.24.138.23/web/apache-tomcat-6.0.13
  11. 172.24.138.139/web/apache-tomcat-6.0.13
  12. 172.24.138.140/web/apache-tomcat-6.0.13
  13. 172.24.138.141/web/apache-tomcat-6.0.13
  14. 172.24.138.142/web/apache-tomcat-6.0.13
  15. 172.24.138.143/web/apache-tomcat-6.0.13
复制代码

作者: wind_ch   发布时间: 2010-12-14

回复 scrit


    运行了没结果啊。。

作者: sai9924   发布时间: 2010-12-14