foreach $row (@res) { if(defined $merge->{...} ) { if ( $merge->{...}->{next_samp} == $row->{starttime}) { $merge->{...}->{endtime} = $row->{endtime} ; $merge->{...}->{next_samp} = $row->{endtime} + 1./$row->{srate} ; } else { delete $merge->{...}->{next_samp} ; $dummy[++$#dummy] = $merge->{...} ; $merge->{ ...} = $row ; $merge->{...}->{next_samp} = $row->{endtime} + 1./$row->{srate} ; } } else { $merge->{ ...} = $row ; $merge->{...}->{next_samp} = $row->{endtime} + 1./$row->{srate} ; } }