> $foo->{$i} = [ @record ]; You're creating 14000 arrays, and references to them (refs take up space too!). That's where the memory is going.
See if you can use a more efficient data structure. For example, it takes less space to make 4 arrays with 14000 entries in each than to make 14000 arrays with 4 entries each. There is some discussion of this in the Advanced Perl Programming book, and probably some CPAN modules that can help. - Perrin