in reply to Spreadsheet::WriteExcel - writes the header but no subsequent rows
The Workbook object falls out of scope at the end of new_agency() and its DESTROY sub is invoked. This reaps the data written thus far and writes it out to a file.
The Worksheet object isn't DESTROYed since you maintain a reference to it. So, you can continue writing to it but it's parent Workbook is no longer there.
The solution is to return a reference to the Workbook as well as the Worksheet so that they both have the same scope:
sub new_agency { #... return($worksheet, $workbook); } # And later: my ($w, $wb) = new_agency ($header, $acronym);
In situations where you are creating Workbook and Worksheet objects in subs it is best to explicitly call the Workbook close() method to ensure that destruction is performed in the correct order.
--
John.
|
|---|