Perl文件处理的大小有限?
我在perl中创建了一个用于留言板迁移的翻译器,我所做的只是应用正则表达式并打印结果。我将stdout写入文件,然后我们开始了!但问题是我的程序在18 MB写完后无法运行!
我做了一个translate.pl(https://gist.github.com/914450)
并使用此行启动它:
$ perl translate.pl mydump.sql> mydump-bbcode.sql
真的很抱歉代码的质量,但我从来没有使用perl ...我尝试sed同样的工作,但没有设法应用我在原始脚本中找到的正则表达式。
[编辑]
我重新编写代码并清理了一些正则表达式(请参阅gist.github.com/914450),但我仍然卡住了。当我在15M文件中拆分大转储时,我启动了translate.pl 7(进程)7来使用所有内核,但脚本停止在可变大小。 “tail”命令在停止时不会在任何URL上显示复杂的消息...
多谢你们 !如果我最终管理,我会通知你
没有找到相关结果
已邀请:
5 个回复
锹缄
..在脚本的顶部。它会抱怨没有正确宣布你的词汇,所以继续这样做。我没有看到任何明显的截断你的文件,但也许你的一个或多个正则表达式是病态的。此外,不需要最后的undefs。 对于你正在做的事情,你可能会考虑使用sed
蹦吃舷弦
节目?如果你在循环后加一个
,那会出现吗?
镀建啼
。 每当
设置为空行时,while将评估为False并退出循环。 你需要使用类似
的东西 编辑: 嗯。我一直认为你需要
但是在我的测试中它刚才没有退出空行或0.必须更多的是那种特殊的Perl魔法,它主要以你想要的方式工作 - 除非它没有。 事实上,如果你足够重构while循环,你可以欺骗Perl,让我按照我一直认为的方式工作。 (它可能有,在Perl 4或早期版本的Perl 5中) 这将失败:
寒健
添加到脚本的顶部。这将使所有输出无缓冲。 你的一个正则表达是疯狂的,并在你不期待它时删除字符串。 你的磁盘空间已经用完了。 你的脚本没有什么问题(除了你缺少
而你没有使用
的三参数形式)会导致它在一些魔法字节数后停止工作。
肺鬼耙扮群