读书人

perl打印数组解决方案

发布时间: 2013-01-06 15:44:48 作者: rapoo

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");
}

读书人网 >perl python

热点推荐