I've recently begun using Spreadsheet::WriteExcel. If you're getting a new worksheet each time a sub is called, you may have
$ws = $workbook -> add_worksheet();
In the sub; this will create a new worksheet on each call, numbering them sequentially (1, 2, .... n). You could pass $ws to the sub, and manage worksheet creation in the calling routine (my preference) or surround the add_worksheet call with some logic so it's not invoked after the first invocation.
At that time  the chief engineer was almost always the chief test pilot as well. That had the fortunate result of eliminating poor engineering early in aviation.
—Igor Sikorsky, reported in AOPA Pilot
magazine February 2003.