Следующий код должен загрузить текстовый файл в хеш:
my %hash;
while (chomp(my $key = <DATA>)) {
chomp(my $val = <DATA>);
$hash{$key} = $val;
}
Расход памяти на записи хеша будет зависеть от архитектуры (32 против 64 бит), но должен быть порядка пары сотен байтов для самого хэша, а затем около 30-60 байтов на ключ и значение, плюс накладные расходы типа данных ключа и значения. Вы можете использовать Devel::Size
, чтобы проверить это самостоятельно. Также прочитайте это .
Итак, в вашем примере на 64-битной платформе миллион записей должен стоить примерно:
136 для хэша
58 + 15 + 58 + 50 == 181 на пару ключ / значение x 1 000 000
181 МБ для миллиона записей указанных вами размеров.