my $nodeList = [ ['AMS', 'a'], ['APJ', 'ap'], ['EMEA', 'e'], ]; my $workbookNodeList = Excel::Writer::XLSX->new("Node_List.xlsx"); $workbookNodeList->set_properties( title => 'Node List', author => 'L_WC demo', comments => 'Node List', ); my $formatNodeList = $workbookNodeList->add_format(bg_color => 44); $formatNodeList->set_align('center'); my $worksheetNodeList = $workbookNodeList->add_worksheet('AMS'); my $worksheetNodeList1 = $workbookNodeList->add_worksheet('APJ'); my $worksheetNodeList2 = $workbookNodeList->add_worksheet('EMEA'); my @arr = ($nodeList->[0], $nodeList->[1], $nodeList->[2]); my @ar = ('fff'); foreach (@arr) { $_ = threads->new(\&doSomething, $_->[0], $_->[1], $workbookNodeList, $formatNodeList); } foreach(@arr){ $_->join(); } $workbookNodeList->close(); print "Node List is Done."; sub doSomething{ my ($region, $sql, $workbookNodeList, $formatNodeList) = @_; if($region eq 'AMS'){ [$workbookNodeList->sheets()]->[0]->write(0,0, 'rrrrrr', $formatNodeList); print "AMS -----DONE.\n"; } if($region eq 'APJ'){ [$workbookNodeList->sheets()]->[1]->write(0,0, '1', $formatNodeList); print "APJ -----DONE.\n"; } if($region eq 'EMEA'){ [$workbookNodeList->sheets()]->[2]->write(0,0, 'j8', $formatNodeList); print "EMEA -----DONE.\n"; } }