Given that I hadn't noticed the getstore function, I found the FTP-based implementation above to be much superior. Three reasons why:
- It's shorter code: fewer lines and characters
- It's clearer code: it avoids the intermediation of a variable into the download process
- It's faster code: I noticed this empirically, and I imagine the difference there is from saving everything into one 30MB variable.
I guess you think the LWP version is clearer to read? After I get some sleep I'll benchmark the three approaches (Net::FTP, LWP::Simple::get(), and LWP::Simple::getstore()) and see what shakes out there.