Помимо сохранения ваших структур данных на диске (связанный хэш DBM, как предложил Леон Тиммерманс, база данных SQL, такая как SQLite3 и т. Д.), Вы не сможете значительно сократить потребление памяти.300M реальных данных, плюс интерпретатор perl, представление байт-кода вашей программы, плюс метаданные в каждой из извлеченных строк увеличат общее количество используемой памяти до 300M, если вы сохраните все это в памяти.Во всяком случае, я слегка удивлен, что он только вдвое больше размера входного файла.
Еще одна вещь, которую следует учитывать, это то, что, если вы собираетесь обрабатывать один и тот же файл более одного раза, сохранитеРазобранная структура данных на диске означает, что вам никогда не понадобится время для ее повторного анализа при последующих запусках программы.