my $COLMAXITEM = 3; my $idx = 0; my @rows = (); my $maxcount = scalar @item - 1; while(my $it = $sth->fetchrow_hashref) { push @cols, {IMAGES_PATH => $images_path, IMAGESRC=> $it->{code}}; if(scalar @cols == $COLMAXITEM or $idx+1 == $maxcount) { push @rows, {COLS => [@cols]}; @cols = (); } $idx++; }