首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

perl 中 hash用法请问

2013-01-07 
perl 中 hash用法请教本帖最后由 fibbery 于 2012-12-26 09:03:27 编辑有如下代码:open RULE, switchor

perl 中 hash用法请教
本帖最后由 fibbery 于 2012-12-26 09:03:27 编辑 有如下代码:

open RULE,"< switch"  or die "ERROR: Can't open file switch\n";
while(<RULE>){
  chomp();
  if($_ =~ /^\s*#DEFINE\s*(\S+)\s+(.*)(\d+)\~(\d+)/i){
        $NAME = $1;
        for($3 .. $4){
             push  $switch1->@options1,  "$_";
        }
        %switch1=(
               "SWITCHN" => $NAME,
               "OPTION"  => \@options1
         );
         push @switchs,  \%switch1;
   }
}

为什么我调用 $switchs[$index]->{"SWITCHN"} 不管$index 是多少,得到的都是RULE 最后一行的数据? 前面的数据被替换了吗?

[解决办法]
引用:
为什么我print出来的全部是4xtm,而没有IntM 和 2xtm
仅供参考:
open RULE, "< switch" or die "ERROR: Can't open file switch\n";
my %switch1;
while( <RULE> )
{
chomp();
if( $_ =~ /^\s*#DEFINE\s*(\S+)\s+(.*)(\d+)\~(\d+)/i )
{
$NAME = $1;
my @options1;
for( $3 .. $4 )
{
push @options1, $_;
}
$switch1{$NAME} = \@options1;
}
}

for my $key ( keys %switch1 )
{
print $key, ":";
my $array = $switch1{$key};
for my $item ( @$array )
{
print "$item ";
}
print "\n";
}

热点排行