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.
emc
At that time [1909] 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.