对于大文件,如果需要读取速度,就不要一行一行低地读,因为这样会导致每个字符都与\n比较。可以依据个人内存的大小,一次用sysread读入100M,在内存中处理。尽量减少I/O的次数。处理内存中的数据的时候,最好使用Inline::C,以尽量减少内存拷贝。比如以\n切割字符串到数组里,只需把\n的这格内存替换成\0,然后把切开的各个字符串的起始位置指针压入返回值栈就行了。<br><br><div><span class="gmail_quote">
在07-4-17,<b class="gmail_sendername">Dongxu Ma</b> &lt;<a href="mailto:dongxu.ma@gmail.com">dongxu.ma@gmail.com</a>&gt; 写道:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
在07-4-17,<b class="gmail_sendername">Zhu Zhu</b> &lt;<a href="mailto:zhuzhu@perlchina.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">zhuzhu@perlchina.org</a>&gt; 写道:<div><span class="q"><span class="gmail_quote">
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
没有遇到过,我只遇到过 1G - 2G 的日志处理,不过我不知道怎么才能合理读取这么<br>大的文件,<br>要求是从日志文件中每天提取前一天的记录。到每个月 20号的时候就用差不多2G了,<br>请问<br>对于这种大日志文件我该怎么做呢?</blockquote></span><div><br>logrotate <br></div><span class="q"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

在 Tue, 17 Apr 2007 15:07:19 +0800,Achilles Xu &lt;<a href="mailto:formalin14@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">formalin14@gmail.com</a>&gt; 写<br>道:<br><br>&gt; perl中处理中文的原则:
<br>&gt;<br>&gt; 让中文字符串在perl中以utf8的形式存在。一个字符串进来的时候如果是其他编<br>&gt; 码,先转成utf8,出去的时候再转成相应的编码。这样可以保证任何操作都不出
<br>&gt; 错。<br>&gt;<br><br></blockquote></span></div><br clear="all">很对,如果只是单纯copy或者move这样的整块stream,不考虑编码一般没问题。<br>但要process,比如现在要分析html结构,就另当别论了。<br>process通常需要识别一定的token,比如html中的&#39;&lt;&#39; &#39;&gt;&#39;。<br>宽字节的编码都会把非asc部分编码为两个或以上字节,如果你把这些编码后的字节串
<br>直接看作asc,(这是你perl里将为出现的情况),那某个宽字符编码出来的某个byte可<br>能恰好就是&#39;&lt;&#39;或者&#39;&gt;&#39;,这是导致混乱的原因,如果像libXML这样的非容错解析,会<br>马上报错,碰上可容错的,一般会把到此为止的部分return回去。<br>这是转为utf8的真正原因,因为perl里unicode编码就是utf8。<br><span class="sg">-- </span>
<div><span class="e" id="q_111fefd04461ad2c_6"><br>cheers,<br>-dongxu
<br>__END__<br><a href="http://search.cpan.org/%7Edongxu" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://search.cpan.org/~dongxu</a>
</span></div><br>_______________________________________________<br>China-pm mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:China-pm@pm.org">China-pm@pm.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://mail.pm.org/mailman/listinfo/china-pm" target="_blank">
http://mail.pm.org/mailman/listinfo/china-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>---------------------------<br>Achilles Xu<br><a href="http://www.lazycode.org/achilles/">http://www.lazycode.org/achilles/
</a>