in reply to Oracle to Excel

The problem is here:
foreach my $stmt (@data) { $worksheet->write($row++, @data); # !! last; }
The correct syntax for write() is:
write($row, $column, $token, $format)
You are missing the $column argument, which in this case is probably 0. If $stmt is an array ref then you can write it in one go as follows:
$worksheet->write($row++, 0, $stmt);

--
John.