【发布时间】:2014-08-22 06:26:00
【问题描述】:
我有一个 CGI 脚本,我们的员工使用该脚本从他们无法直接访问的服务器中获取日志。由于我不会深入讨论的原因,在最近对我们的应用程序进行更新后,其中一些日志现在已经将换行符、制表符、反斜杠等字符翻译成它们的文本等价物。因此,我修改了 CGI 脚本以调用以下命令将它们转换回其原始值:
perl -i -pe 's/\\r/\r/g && s/\\n/\n/g && s/\\t/\t/g && s/\\\//\//g' $filename
我刚刚得知有些人在尝试获取相当大(几百 MB)的日志时出现内存不足错误。
我的问题:当调用这样的内联命令时,perl 如何管理内存?它是读入整个文件,处理它,然后将其写出,还是创建一个临时文件,一次处理输入文件中的行,然后在完成后替换文件?
这是在 64 位 Amazon linux 实例上使用 perl 5.10.1。
【问题讨论】:
标签: perl