如何将数组转换为Perl中的散列?

我有一个数组,并尝试将数组内容转换为具有键和值的哈希值.索引0是一个键,索引1是一个值,索引2是一个键,索引3是一个值等.

但它并没有产生预期的结果.代码如下:

open (FILE,"message.xml") || die "Cannot open\n";

$var = <FILE>;

while ($var ne "")
{
 chomp ($var);
 @temp = split (/[\s\t]\s*/,$var);
 push(@array,@temp);
 $var = <FILE>;
}

$i = 0;
$num = @array;
    while ($i < $num)
{
 if (($array[$i] =~ /^\w+/i) || ($array[$i] =~ /\d+/))
 {
#   print "Matched\n";
#   print "\t$array[$i]\n";
  push (@new,$array[$i]);
 }
 $i ++;
}
print "@new\n";


use Tie::IxHash;
tie %hash,"Tie::IxHash";

%hash = map {split ' ',$_,2} @new;

while ((my $k,my $v) = each %hash)
{
 print "\t $k => $v\n";
}

产出的产量不正确:

name Protocol_discriminator attribute Mandatory type nibble value 7 min 0 max F name Security_header attribute Mandatory type nibble value 778 min 0X00 max 9940486857
         name => Security_header
         attribute => Mandatory
         type => nibble
         value => 778
         min => 0X00
         max => 9940486857

输出中,您可以看到散列仅由一部分组成,数组的另一部分不会在散列中创建.

谁能帮忙?

解决方法

没有比它更多:
%hash = @array;

相关文章

忍不住在 PerlChina 邮件列表中盘点了一下 Perl 里的 Web 应用框架(巧的是 PerlBuzz 最近也有一篇相关...
bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的...
gb2312转Utf的方法: use Encode; my $str = "中文"; $str_cnsoftware = encode("utf-8...
  perl 计算硬盘利用率, 以%来查看硬盘资源是否存在IO消耗cpu资源情况; 部份代码参考了iostat源码;...
1 简单变量 Perl 的 Hello World 是怎么写的呢?请看下面的程序: #!/usr/bin/perl print "Hello W...
本文介绍Perl的Perl的简单语法,包括基本输入输出、分支循环控制结构、函数、常用系统调用和文件操作,...