编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > Perl > 数组和散列 > Perl 数组和散列 生成散列的散列

Perl 数组和散列 生成散列的散列

下面是一些填充一个散列的散列的技巧。要从一个下面格式的文件里读取数据:

flintstones
husband=fred pal=barney wife=wilma pet=dino

你可以使用下面两个循环之一:

while( <> ){
     next unless s/^(.*?):\S*//;
     $who = $1;
     for $field ( split ) {
         ($key, $value) = split /=/, $field;
          $HoH{$who}{$key} = $value;
     }
}

while( <> ){
     next unless s/^(.*?):\S*//;
     $who = $1;
     $rec = {};
     $HoH{$who} = $rec;
     for $field ( split ) {
         ($key, $value) = split /=/, $field;
         $rec->{$key} = $value;
     }
}

如果你有一个子过程 get_family 返回一个键字/数值列表对,那么你可以拿下面三种方法的任何一种,用它填充 %HoH:

for $group ("simpsons", "jetsons", "flintstones" ) {
     $HoH{$group} = {get_family($group)};
}

for $group ( "simpsons", "jetsons", "flintstones" ) {
     @members = get_family($group);
     $HoH{$group} = {@menbers};
}

sub hash_families {
     my @ret;
     for $group (@_) {
         push @ret, $group, {get_family($group)};
     }
     return @ret;
}

%HoH = hash_families( "simpsons", "jetsons", "flintstones" );

你可以用下面的方法向一个现有的散列附加新的成员:

%new_floks = (
wife => "wilma",
pet  => "dino",
);

for $what (keys %new_floks) {
     $HoH{flintstones}{$what} = $new_floks{$what};
}



编程学习 Perl 数组和散列 生成散列的散列 转载请保留此行.谢谢.

Perl