Просто быстрая проверка работоспособности, вы упоминаете $ &, $ `или $ '(иногда называемые $ MATCH, $ PREMATCH и $ POSTMATCH) где-нибудь в вашем коде? Если это так, Perl скопирует всю вашу строку для каждого совпадения с регулярным выражением, на тот случай, если вы захотите проверить эти переменные.
«В вашем коде» в данном случае означает косвенно, включая использование модулей, которые ссылаются на эти переменные, или запись use English
вместо use English qw( -no_match_vars )
.
Если вы не уверены, вы можете использовать модуль Devel :: SawAmpersand , чтобы определить, были ли они использованы, и Devel :: FindAmpersand , чтобы выяснить где они используются.
Могут быть и другие причины увеличения памяти (какую версию Perl вы используете?), Но переменные соответствия определенно унесут вашу память, если они будут использованы, и, следовательно, являются вероятным виновником.
Cheerio
Пол