my %map while (sysread(CSV, $record, 66)) { $map{substr($record, 18, 14)}->{substr($record, 3, 15)} = substr($record, 36, 29); if ($count++ > 1000) { &process(); undef %map; } }