You may want to look at some database, e.g. DBD::CSV.
UPDATE: I was thinking of something like this but I do not have a 20GB test file to see how fast it is.
use strict; use warnings; use DBI; my $dbn = DBI->connect ("dbi:CSV:", "", "", { f_dir => "dbdcsv" } ); $dbn->do ("DROP TABLE data"); $dbn->do ("CREATE TABLE data (key1 CHAR (10), key2 CHAR(10), data CHAR +(255) )"); my $sth = $dbn->prepare( "INSERT INTO data (key1, key2, data) VALUES ( +?, ?, ?)" ); while(<DATA>){ chomp; $sth->execute( split /\s+/, $_, 3 ); } $sth = $dbn->prepare ( "SELECT * FROM data ORDER BY key1, key2" ); $sth->execute( ); $"="\t"; while( my $row = $sth->fetchrow_arrayref() ) { print "@$row\n"; } __DATA__ key1 key2 ndnjfgdsjfjjkjjfjf... key1 key2 kdfkjdfgdfugbjndkfgkjgndkjfjkd key43 key21 sdkjfhdghdbgbd key1 key3 jujdejnsduhffnjj key2 key2 jhzezhdjjf...
UPDATE 2: I have tested this on some random 20GB test file. I cannot comment on performance but it consumes a LOT of memory...
In reply to Re: sorting type question- space problems
by hdb
in thread sorting type question- space problems
by baxy77bax
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |