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

perl打印数组解决方案

2013-01-06 
perl打印数组想实现一个hash表中value是数组的结构,如下push @{$hash{$data[1]}}, @data[2..$len-1]但是

perl打印数组
想实现一个hash表中value是数组的结构,如下
push @{$hash{$data[1]}}, @data[2..$len-1];

但是在print数组时,
foreach $onekey(%hash)
 {
 print "$onekey\n";
 print "@{$hash{$onekey}}\n";
 }
结果中除了数组中的数据,还有类似:ARRAY(0x988b64)的一些数据。
这些数据是什么?是我的数据结构有问题?
[解决办法]

引用:
想实现一个hash表中value是数组的结构,如下
push @{$hash{$data[1]}}, @data[2..$len-1];

但是在print数组时,
foreach $onekey(%hash)
 {
  print "$onekey\n";
  print "@{$hash{$onekey}}\n";
 }
结果中除了数组中的数据,还有类似:ARRAY(0x98……

从整个程序的角度来说,减少数组复制的过程,最好在你生成@data的时候,使用最小的作用域,然后,你可以将其引用使用赋值的方式给哈希。

例如:

while($line=<>)
{
   chomp($line);
   my @data=split(/\s+/,$line);
   $keyword=shift(@data);
   $hash{$keyword}=\@data;
}
foreach $keyword (keys(%hash))
{
   print("@{$hash{$keyword}}\n");
}

热点排行