perl push array并按顺序排列

时间:2014-04-19 08:39:52

标签: perl

我将一些对象推入数组

my $temp1= Gene->new("id" => $temp[0],"name"=>$temp[1],"chrom"=>$temp[2], "strand"=>$temp[3],"txStart"=>$temp[4], "txEnd"=>$temp[5],"cdsStart"=>$temp[6],"cdsEnd"=>$temp[7],"exonCount"=>$temp[8],"exonStarts"=>$temp[9],"exonEnds"=>$temp[10],"score"=>$temp[11],"name2"=>$temp[12],"cdsStartStat"=>$temp[13],"cdsEndStat"=>$temp[14],"exonFrames"=>$temp[15]);


push(@genes,$temp1);

但是当我使用for循环来获取数组中的每个对象时,

for(my $t=0; $t <= $genes; $t++){   
my $g=$genes[$t];
my $k = -1;
print $g->get_name,"\n";

似乎没有按顺序。原点是

 NR_046018
 NR_024540
 NR_106918
 NR_107062
 NR_036051
 .....

但是当我打印名称时,它似乎是for循环中的随机输出

 NR_046018
 NR_106918
 NR_036051
 NR_036267
 NR_026820
 NR_039983
 NM_001005221

1 个答案:

答案 0 :(得分:0)

for(my $t=0; $t <= $genes; $t++)

应该是

for(my $t=0; $t <= $#genes; $t++)

use strict;会给你一个关于这个错字的提示。