for (my $priday=int($day); $priday >=1 ; $priday--) { my $old_print_date=sprintf('%02d-%02d-%04d',$priday,$month,$year); $date = sprintf('%02d%02d%04d',$priday,$month,$year); my $data = $collection->find({'date' => "$old_print_date"}); while (my $doc = $data->next) { $row = 1; $worksheet->write( $row, $col, sprintf('%0d', $doc{$date}{'Total'}{"305"}), $format2); $row++; $worksheet->write( $row, $col, sprintf('%0d', $doc{$date}{'Pre'}{"305"}), $format2); $row++; $worksheet->write( $row, $col, sprintf('%0d', $doc{$date}{'Post'}{"305"}), $format2); $row++; } }