for my $row(1 ..$row_max){ my $count = 1; my @data = map { my $cell = $worksheet->get_cell($row, $_); $cell ? $cell->value() : ''; } @required_cols; foreach my $col(@values){ warn $worksheet->get_cell($row,0)->value() . $col."\n"; $details->{ $worksheet->get_cell($row,0)->value() }{$col} = shift @data if defined $worksheet->get_cell($row, 1)->value(); } }