我在perl中爲一個消息板遷移做了一個翻譯器,我所做的只是應用正則表達式並打印結果。我寫stdout到一個文件,現在我們開始吧!但問題是我的程序在寫入18 MB後無法工作!Perl文件處理大小有限?
我做了一個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,以使用所有內核,但腳本停在可變大小。當它停止時,「尾部」命令不顯示任何URL上的複雜消息...
謝謝!我讓你知道,如果我管理終於
會有什麼hapen,當你刪除任何東西,但打印'從環print'?你有相同的文件嗎? – 2011-04-12 08:10:31
由於您從sql轉儲文件中一次解析一行,因此如果標記恰好跨越多行(這是完全有效的HTML),則很多正則表達式不匹配。這實際上取決於你的sql轉儲文件是如何格式化的。如果每行有一條INSERT語句(在您的HTML內容中帶有轉義換行符),那麼您應該可以繼續使用您的策略。 – 2011-04-12 09:00:32