I used your code and it took 82 seconds to process app 1.4 million records. My code processes the same records in 17 seconds. Also, since I am using Perl 5.8.9 I replaced "say" with "print", which worked, however the output did not have newlines (i.e., the output was one long record). I tried adding "\n" as a third argument to $csv->print but it gave me an error, so I'm not sure how to get newlines in my output. Is that related to the bug you found?