2011年11月28日星期一

[PerlChina] Re: 急问!同样的程序不能say OUT到file但是可以say到screen这是为什么啊

恩,问题解决了,是溢出了。。实践出真知了,比较0和一个很小的数,perl竟然只能识别到e-308!...bigfloat什么的,用了就更慢了,
我将就一下算了。
谢谢诸位大侠~~!!(学生物的伤不起。。。。)

On 11月28日, 下午2时59分, Michael Zeng <galaxy2...@gmail.com> wrote:
> 没错,
> use strict ; 肯定要
> use warnings; 比-w更丰富,
>
> 对于特别大的文件, perl处理起来是有点慢
> 和你写的regex 或者写法有点关系, 比如很多行,然后你每行都有循环,当然慢,
> 也有可能是perl真的溢出了,你的数据量太大,
> use Math::BigInt; BigFloat等试试, 就是大数字
>
> 你最好多试试几种方法,看哪种效率高, 用while ( <> ) 逐行处理 还行,
>
> 2011/11/28 mandova <mandova1...@yahoo.cn>
>
>
>
>
>
> > 恩,您说的写法我从来么见过。。。汗。。。我太菜了
> > -w 原来不等同于 use warnings啊~~
> > 另外我想起一件事,就是我以前处理特别大的文件(几千万行)的时候输出文件也是会开始空白,要过一段时间才能打开,而且在程序停止很久才停止增
> > 加。。。
> > 然后我现在的问题就是,如果每个f都say了的话到第100多万个的时候会出现"-nan"...如果我用程序跑较小的染色体则不会出现这种情况。唉,
> > 愁。
>
> > On 11月28日, 下午12时13分, Michael Zeng <galaxy2...@gmail.com> wrote:
> > > 提几个建议,
>
> > > 1) use strict; use warnings ; 吧,编译的任何warning都是要注意的,
> > > 有可能你的loop这些程序没有抓到你想要的值,
>
> > > 2) 数组这个可以多用 -> 标示引用么, perl的2维数组全是引用,全写[] 看不清的,
>
> > > 3) 能写习惯的
> > > open my $F1, '>' , 'file" or die "XXXXX" 这样么, if这样看起来累,
>
> > > 我怀疑你 的loop比较多,要好好debug下,中间那段数组处理有的复杂,
> > > 你可以多say下看看,
>
> > > 2011/11/28 mandova <mandova1...@yahoo.cn>
>
> > > > 我刚才说,我两个say之间砍到while之后没有语句,while中什么都不做,就可以say OUT。。。另外,f[k]的长度>150w,我在检
> > > > 查的时候发现的第一个chromosome算f算到100万出头的时候就是-NaN了。。。~~~~(>_<)~~~~ that's
> > > > another problem...
>
> > > > On 11月28日, 上午9时56分, mandova <mandova1...@yahoo.cn> wrote:
> > > > > 天哪为什么是乱码。。。
>
> > > > > On 11月27日, 下午9时31分, cnhack TNT <cnhack...@gmail.com> wrote:
>
> > > > > > 额。。。麻烦多贴些相关代码成么? 不然要大家瞎子摸黑怎么个帮法儿?
> > > > > > 你都说了,砍掉一些语句就有输出了,那不就是你砍掉的语句有问题么,贴上来分析分析不就清楚了?
>
> > > > > > 2011/11/27 mandova <mandova1...@yahoo.cn>
>
> > > > > > > if(!open OUT,">","<文件名>" ) { die "..."; }
> > > > > > > 一直都是这样写的页没有出问题。。。程序一开始运行就应该有一个输出的,但是say
> > > > OUT没有,如果只是say就有在屏幕上。我把两个应该有输出的地
> > > > > > > 方之间的语句砍到一定程度就可以say OUT了。。。
>
> > > > > > > On 11月27日, 下午8时31分, 昨夜星尘 <chun191...@gmail.com> wrote:
> > > > > > > > 你的OUT是怎么定义的?定义错误也会出现这种情况。写文件用不了多少内存。
>
> > > > > > > > On 11月27日, 下午4时28分, mandova <mandova1...@yahoo.cn> wrote:
>
> > > > 我一直是这样写的,没有用过STDOUT,不知为什么这个程序就不行了。我试着把两个输出之间的语句减少看是否能够输出,答案是可以的(但是是没有任何
> > > > > > > > > 道理啊。。)
> > > > > > > > > 中间语句多到一定程度就不能写到文件里(文件始终为空),而我把OUT去掉就一直会持续地在屏幕上有输出。
> > > > > > > > > 我现在觉得是内存的问题。。。因为中间处理的数据很大。不了解写文件的动作要占用多少内存,似乎是压死骆驼的那最后一根稻草。。
>
> > > > > > > > > On 11月27日, 下午3时26分, Robin Lee <robinlee.s...@gmail.com>
> > wrote:
>
> > > > > > > > > > 应该改成 STDOUT ?
>
> > > > > > > > > > 2011/11/27 mandova <mandova1...@yahoo.cn>
>
> > > > > > > > > > > 改成print也不行,文件打开没有报错,就是死活写不进文件啊~~~把OUT去掉就可以写在屏幕上。。。。-
> > 隐藏被引用文字
> > > > -
>
> > > > > > > > > > - 显示引用的文字 -- 隐藏被引用文字 -
>
> > > > > > > > - 显示引用的文字 -
>
> > > > > > > --
> > > > > > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> > > > > > > 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> > > > > > > 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> > > > > > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN
> > 访问此网上论坛。-
> > > > 隐藏被引用文字 -
>
> > > > > > - 显示引用的文字 -- 隐藏被引用文字 -
>
> > > > > - 显示引用的文字 -
>
> > > > --
> > > > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> > > > 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> > > > 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> > > > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。
>
> > > --
> > > Yours Sincerely
> > > Zeng Hong- 隐藏被引用文字 -
>
> > > - 显示引用的文字 -
>
> > --
> > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
> > 要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
> > 要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
> > 若有更多问题,请通过http://groups.google.com/group/perlchina?hl=zh-CN访问此网上论坛。
>
> --
> Yours Sincerely
> Zeng Hong- 隐藏被引用文字 -
>
> - 显示引用的文字 -

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: