+ -
当前位置:首页 → 问答吧 → 能不能把调用子程序放在子程序里面?谢谢~

能不能把调用子程序放在子程序里面?谢谢~

时间:2011-01-12

来源:互联网

请问这样可以吗?(我试过不行。。。有没有更好的办法???)------
#!/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;

作者: havocor   发布时间: 2011-01-12

只用过函数和方法递归调用,没有用过楼主说的程序中调用

作者: chenzq1604   发布时间: 2011-01-12