免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1766 | 回复: 3
打印 上一主题 下一主题

能不能把调用子程序放在子程序里面?谢谢~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-12 14:46 |只看该作者 |倒序浏览
请问这样可以吗?(我试过不行。。。有没有更好的办法???)------
#!/usr/bin/perl -w
use strict;
my $i;
for ($i = 0; $i <= 100; $i++){
                  `perl sare1.pl wwww >tter`;
                 `mv tter wwww`;
}


----------------
如果用子程序的话,能不能把调用子程序放在子程序里面????好像不行。。。。-------
#!/usr/bin/perl
use strict;
             my @cyclee;
              my @file;
                        my @result;
                        while (<>){
             my  @tmp = split;
                   push @cyclee, [ @tmp ];
                                                                                                                                                                                                                                                                 }


for my $wor(@cyclee){
                  print "@$wor\n";
}
for my $row(@result){
                  print "@$row\n";
}




sub cyclee{
                  my @file = @_;
                                                                                                                                                                                                                                                                  for my $i (0 .. $#file){
             if($file[$i+1][3] == $file[$i][3] && $file[$i+1][3] < $file[$i][4]  && $file[$i+1][4] < $file[$i][4]){
                                print "$file[$i+1][0]\t$file[$i+1][1]\t$file[$i+1][2]\t$file[$i][3]\t$file[$i+1][4]\t$file[$i+1][5]\t$file[$i+1][6]\t$file[$i+1][7]\t$file[$i+1][8]\t\n";
                 }
                                                                                                                                                                                                                                                                                                             elsif($file[$i+1][3] == $file[$i][3] && $file[$i+1][3] < $file[$i][4] && $file[$i+1][4] >= $file[$i][4]){
                                                                                                                                                                                                                                                                                                                                print "$file[$i][0]\t$file[$i][1]\t$file[$i][2]\t$file[$i][3]\t$file[$i][4]\t$file[$i][5]\t$file[$i][6]\t$file[$i][7]\t$file[$i][8]\t\n";
                                                                                                                                                                                                                                                                                                                          }
                                                                                                                                                                                                                                                                                                           elsif($file[$i+1][3] > $file[$i][3] && $file[$i+1][3] < $file[$i][4] && $file[$i+1][4] >= $file[$i][4]){
                                                                                                                                                                                                                                                                                                                print "$file[$i][0]\t$file[$i][1]\t$file[$i][2]\t$file[$i+1][3]\t$file[$i][4]\t$file[$i][5]\t$file[$i][6]\t$file[$i][7]\t$file[$i][8]\t\n";
                                                                                                                                                                                                                                                                                                                                                }
                                                                                                                                                                                                                                                                                                              elsif($file[$i+1][3] > $file[$i][3]  && $file[$i+1][3] < $file[$i][4]  && $file[$i+1][4] < $file[$i][4]){
                                                                                                                                                                                                                                                                                                                        print "$file[$i+1][0]\t$file[$i+1][1]\t$file[$i+1][2]\t$file[$i+1][3]\t$file[$i+1][4]\t$file[$i+1][5]\t$file[$i+1][6]\t$file[$i+1][7]\t$file[$i+1][8]\t\n";
                                                                                                                                                                                                                                                                                                                                                                                                                                                 }
                                                                                                                                                                                                                                                                                                           elsif($file[$i+1][3] >=  $file[$i][4]){
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
       print "$file[$i][0]\t$file[$i][1]\t$file[$i][2]\t$file[$i][3]\t$file[$i][4]\t$file[$i][5]\t$file[$i][6]\t$file[$i][7]\t$file[$i][8]\t\n";
                                                                                                                                                                                                                                                                                                                                                                          }



}
my @result = &cyclee(@cyclee);
if($#result < $#cyclee){
                        my @cyclee = &cyclee(@result);
}


}
---------------------
用到的输入文件:
gi_68349971_gb_AAGK01000005     genscan mRNA    4239    4451    .       -       .       ID=G000134;Type=sigle-exon;
gi_68352484_gb_AAGK01000001     AUGUSTUS        mRNA    87382   87684   0.98    -       .       ID=A4844;
gi_68351525_gb_AAGK01000002     genscan mRNA    94270   94722   1       -       .       ID=A3297;

gi_68349689_gb_AAGK01000006     AUGUSTUS        mRNA    114482  114691  1       -       .       ID=A0381;
gi_68351525_gb_AAGK01000002     genscan mRNA    116765  116851  0.43    +       .       ID=A3453;

gi_68349971_gb_AAGK01000005     AUGUSTUS        mRNA    117381  117527  0.96    +       .       ID=A1300;
gi_68350595_gb_AAGK01000004     genscan mRNA    123238  123609  0.36    +       .       ID=A2358;

论坛徽章:
0
2 [报告]
发表于 2011-01-12 14:52 |只看该作者
只用过函数和方法递归调用,没有用过楼主说的程序中调用

论坛徽章:
0
3 [报告]
发表于 2011-01-12 16:10 |只看该作者
回复 2# chenzq1604


    。。。请问具体怎么弄的??

论坛徽章:
0
4 [报告]
发表于 2011-01-12 16:42 |只看该作者
回复 2# chenzq1604


    请问是不是可以用二叉树的方法???
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP