I resorted to test it out myself after googling too many basic perl usage, functions and such so here it is:
Test notes
Stats shown here varies a lot from my question because I had an external api call for each row which took a lot of time.
Memory stats for php are peak usage difference between not creating any excel file and creating it, and with perl I used valgrind. (here too, ignore memory stats from my question)
Also, I did not used piping to pass values from my php orm to perl (which could have been faster) nor did I execute queries within perl as I did not want to dig too deep into perl for this test. I merely wrote a json_encoded string into a file from php, called a perl script using exec(), then read the file and decoded the json string in perl.
And I used the latest versions of both libraries
Data tested
Creating one header row with a basic bold formatting,
180 more rows of data with columns up to BG,
with a bunch of dates and numeric formats applied on half of the columns,
and auto-resizing of columns.
The answer / Results (avg. from few runs)
With PHPExcel: 4.94 seconds, 60,191 mb
With Perl Spreadsheet::WriteExcel: 0.01 seconds, 13,193 mb