To clarify a little: I have tab-delimited files that usually end up being around half a million lines long each. Originally, I had set my code up so that it would create a new object for each line, where its "fields" were the attributes. This took "half a day", or to be less colloquial about 4 hours. Now, I'm just parsing each line as a hash of attributes into a set of hashes that stores all the lines have their type attributes in common. This is now taking 16 seconds.
I don't think my system is thrashing. I just haven't quite learnt how to use Perl effectively!