![运行非常复杂的 Perl 脚本时出现特定的“内存不足!”消息](https://linux22.com/image/829329/%E8%BF%90%E8%A1%8C%E9%9D%9E%E5%B8%B8%E5%A4%8D%E6%9D%82%E7%9A%84%20Perl%20%E8%84%9A%E6%9C%AC%E6%97%B6%E5%87%BA%E7%8E%B0%E7%89%B9%E5%AE%9A%E7%9A%84%E2%80%9C%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%EF%BC%81%E2%80%9D%E6%B6%88%E6%81%AF%20.png)
我正在运行一个 Perl 脚本,该脚本解析了大约 7,000 个 HTML 文件中的信息。可能不太相关,但我只是想描述一下,这确实做了很多事情。我最初让他们直接将我正在寻找的信息打印到终端中,然后将其粘贴到我的电子表格中。然而,大约进行到一半时,我被告知内存不足,然后它就停止了。
Out of memory!
- 没有其他的
我搜索了一下,但找不到任何关于终端具体打印此内容的内容。我可以找到与 Linux 相关的帖子,说是内存不足,但我想确定一下。我试过让它写入 .txt 文件而不是打印到终端中,但没有成功。
我该如何修复这个问题并让 Perl 脚本完全运行?
答案1
不用与 perl 优化作斗争,而是使用这样的包装器:
wrapper.sh
#!/bin/bash
for i in `ls $1`
do
echo $i
<perl script> $i
done
使用方法如下:
./wrapper.sh *.html
因此,perl 脚本不再在一次运行中循环遍历 7k 个文件,而是对每个文件都重新开始。
我还建议您将输出重定向到文件而不是屏幕。如果将终端(xterm、gnome-term 等)设置为无限制缓冲区/行,则可能会用尽所有内存。