Hi, 貌似有一个版本要支持这个 "." 语法了.
/Heng 于 2011年12月09日 20:02, 风河 写道: > > perl可以重载操作符的吗? > 比如->用.代替? > > 在 2011-12-9 下午6:40,"Michael Zeng" <[email protected] > <mailto:[email protected]>> 写道: > > > > 对,ms不是perl的数据结构, perl的带 -> 的,清楚些 > > > > 2011/12/9 Shou Ya <[email protected] <mailto:[email protected]>> > >> > >> �w下是C/Java程序�T? �K不是很有Perl程序�T�S械哪欠N�L格啊. > >> > >> 在 2011年11月28日 上午9:53,mandova <[email protected] > <mailto:[email protected]>> 写道: > >> > z这样呀~ > >> > > >> > #!usr/bin/perl -w > >> > use 5.010; > >> > > >> > > >> > $a[0][1]=0.1; $a[0][2]=0.2; $a[0][3]=0.6; $a[0][4]=0.1; # 4 > >> > starting probs > >> > $a[1][0]=0.1; $a[2][0]=0.2; $a[3][0]=0.6; $a[4][0]=0.1; # 4 ending > >> > probs > >> > $a[1][1]=0.1; $a[1][2]=0.7; $a[1][3]=0.1; $a[1][4]=0.1; > >> > $a[2][1]=0.1; $a[2][2]=0.75; $a[2][3]=0.1; $a[2][4]=0.05; > >> > $a[3][1]=0.3; $a[3][2]=0.2; $a[3][3]=0.4; $a[3][4]=0.1; > >> > $a[4][1]=0.2; $a[4][2]=0.2; $a[4][3]=0.4; $a[4][4]=0.2; > >> > > >> > @lamda=(0,1,8,4,30); > >> > > >> > sub Poi # $_[0] is lambda, $_[1] is x. > >> > { > >> > $aa=exp(-$_[0])*$_[0]**$_[1]; > >> > if($_[1]>1) > >> > { > >> > foreach $frac(1..$_[1]) { $aa=$aa/$frac; } > >> > } > >> > $aa; > >> > } > >> > > >> > if(!open OUT, ">", "nor_debug") { die "can't open processing middle > >> > file for nor!"; } > >> > > >> > $delta=1; > >> > $itr=1; > >> > while(($delta>0.00001)&&($itr<100000)) > >> > { > >> > say OUT "begin itr: $itr"; > >> > foreach $ch(1..22) > >> > { > >> > if(!open IN, "<", "nor$ch.fs") { die "can't open full sites for > >> > chromosome $ch!"; } > >> > > >> > > >> > @x=(0); > >> > $L=0; > >> > while(<IN>) > >> > { > >> > chomp; > >> > if(/\d+\t(\d+)/) { push(@x,$1); $L++;} > >> > } > >> > close IN; > >> > @s=(); > >> > @f=(); > >> > $f[0][0]=1; $f[1][0]=0; $f[2][0]=0; $f[3][0]=0; $f[4][0]=0; > >> > $s[0]=1; > >> > foreach $m(1..4) > >> > { > >> > $f[$m][1] += &Poi($lamda[$m],$x[1]) * $a[0][$m]; > >> > $s[1] += $f[$m][1]; > >> > } > >> > foreach $m(1..4) > >> > { > >> > $f[$m][1]/=$s[1]; > >> > } > >> > > >> > foreach $i(2..$L) > >> > { > >> > $im=$i-1; > >> > foreach $k(1..4) > >> > { > >> > foreach $q(1..4) > >> > { > >> > $f[$k][$i] += $f[$q][$im] * $a[$q][$k]; > >> > } > >> > $f[$k][$i] *= &Poi($lamda[$k],$x[$i]); > >> > $s[$i] += $f[$k][$i]; > >> > } > >> > foreach $k(1..4) > >> > { > >> > $f[$k][$i]/=$s[$i]; > >> > } > >> > } > >> > > >> > foreach $k(1..4) # calcu P(X)! > >> > { > >> > $px+=$f[$k][$L]*$a[$k][0]; > >> > } > >> > say OUT "finished XX for chromosome $ch!"; > >> > ...... > >> > > >> > 呐,就两个say之间,砍到while后面没有,while里面什么也不做的时候就 > 可以say OUT了。。。 > >> > ps那个f[$k]是一个有150w个以上的分量的数组,我算到100万多一点的时 > 候就变成-NaN了。。。。。。这又是另一个问题了。。。。。 > >> > > >> > On 11月27日, 下午9时31分, cnhack TNT <[email protected] > <mailto:[email protected]>> wrote: > >> >> 额。。。麻烦多贴些相关代码成么? 不然要大家瞎子摸黑怎么个帮法儿? > >> >> 你都说了,砍掉一些语句就有输出了,那不就是你砍掉的语句有问题么, > 贴上来分析分析不就清楚了? > >> >> > >> >> 2011/11/27 mandova <[email protected] > <mailto:[email protected]>> > >> >> > >> >> > >> >> > >> >> > if(!open OUT,">","<文件名>" ) { die "..."; } > >> >> > 一直都是这样写的页没有出问题。。。程序一开始运行就应该有一个输 > 出的,但是say OUT没有,如果只是say就有在屏幕上。我把两个应该有输出的地 > >> >> > 方之间的语句砍到一定程度就可以say OUT了。。。 > >> >> > >> >> > On 11月27日, 下午8时31分, 昨夜星尘 <[email protected] > <mailto:[email protected]>> wrote: > >> >> > > 你的OUT是怎么定义的?定义错误也会出现这种情况。写文件用不了 > 多少内存。 > >> >> > >> >> > > On 11月27日, 下午4时28分, mandova <[email protected] > <mailto:[email protected]>> wrote: > >> >> > >> >> > > > 我一直是这样写的,没有用过STDOUT,不知为什么这个程序就不行 > 了。我试着把两个输出之间的语句减少看是否能够输出,答案是可以的(但是是 > 没有任何 > >> >> > > > 道理啊。。) > >> >> > > > 中间语句多到一定程度就不能写到文件里(文件始终为空),而我 > 把OUT去掉就一直会持续地在屏幕上有输出。 > >> >> > > > 我现在觉得是内存的问题。。。因为中间处理的数据很大。不了解 > 写文件的动作要占用多少内存,似乎是压死骆驼的那最后一根稻草。。 > >> >> > >> >> > > > On 11月27日, 下午3时26分, Robin Lee > <[email protected] <mailto:[email protected]>> wrote: > >> >> > >> >> > > > > 应该改成 STDOUT ? > >> >> > >> >> > > > > 2011/11/27 mandova <[email protected] > <mailto:[email protected]>> > >> >> > >> >> > > > > > 改成print也不行,文件打开没有报错,就是死活写不进文件 > 啊~~~把OUT去掉就可以写在屏幕上。。。。- 隐藏被引用文字 - > >> >> > >> >> > > > > - 显示引用的文字 -- 隐藏被引用文字 - > >> >> > >> >> > > - 显示引用的文字 - > >> >> > >> >> > -- > >> >> > 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers > 讨论组"论坛。 > >> >> > 要向此网上论坛发帖,请发送电子邮件至 > [email protected] <mailto:[email protected]>。 > >> >> > 要取消订阅此网上论坛,请发送电子邮件至 > [email protected] > <mailto:perlchina%[email protected]>。 > >> >> > 若有更多问题,请通过http://groups.google.com/group > /perlchina?hl=zh-CN访 问此网上论坛。- 隐藏被引用文字 - > >> >> > >> >> - 显示引用的文字 - > >> > > >> > > >> > >> > >> > >> -- > >> Ya Shou > >> [email protected] <mailto:[email protected]> > >> http://54c3.tk > >> > >> > > > > > > > > -- > > Yours Sincerely > > Zeng Hong > > > -- 我的博客 -- http://blog.yixinit.com/ 诸法从缘起,如来说是因。 彼法因缘尽,是大沙门说。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
