111 发表于 2015-12-26 17:41:27

perl多维哈希(实用篇)

  
  
  博客园不能代码高亮,如果对perl、R、python感兴趣可以去我的主页www.from0701.com。
  
  
  今天给大家介绍的是perl多维哈希,这是个非常实用的perl对象。废话不多说下面直接来个实例。
假设我有一批数据,格式如下
  种类    大小   名称
a         1       name1
a         1       name2
a         1       name3
a         2      name4
a         2      name5
b         1       name6
b         1      name7
b         1      name8
c          1      name9
c          2      name10
c          2      name11
  假设上述数据储存在名为“test.txt”的文档中且字段以tab分割,下面要做的就是用二维数组保存这批数据,其中键值1为名称,键值2为大小,value为种类。


#!/usr/bin/perl
use autodie;
use warnings;
open TEST,"test.txt" #只读方式打开文件
my $multi_hash={}; #创建多维哈希,不要问我为什么这么做,因为我也不知道,有时候能用更重要
while(<TEST>){ #遍历文件
    chomp($_); #去除换行符
    @tem=split /\t/,$_; #用tab拆分行
    $multi_hash->{$tem}->{$tem}=$tem; #给哈希赋值
    #一级键$tem为名称,二级键$tem为大小,值$tem为种类
}
##########以下为遍历多维哈希#################################
foreach $name (keys %{$multi_hash}){ #取出一级键,foreach可用for代替
    foreach $size (keys %{$multi_hash->{$name}}){ #取出二级键
      print $multi_hash->{$name}->{$size}."\n";#打印values
    }
}
页: [1]
查看完整版本: perl多维哈希(实用篇)