如何在Perl中删除数组的换行符并在其开头添加元素?

问题描述 投票:0回答:1

我正在学习Perl,所以我正在编写一个脚本来处理Fasta文件:

我的文件:

>name  aaaaaaaaaaaaaaaaaa
>name2  acacacacacaacaccacaac
.
.
.
> namex aattatatattataattatatttat

此脚本:

    #!/usr/bin/perl

    use strict;
    use warnings;
    use feature 'say';

    my %alliloux =();

    while (<>) {
        s/>//g;
        my ($onoma, @seq) = split (/\n/, $_);
        my ($sp, $head) = split (/\./, $onoma);
        push @{ $alliloux{$sp} }, join "\n", ">$onoma", @seq;

               }

    foreach my $sp (keys %alliloux) {
                   chomp $sp; 
          my ($head, $dna) = split(/\t/, $sp);  
          my @start_cod = substr($dna, 3);

          print @start_cod;
          #my $output = `/home/kgee/bin/getorf.c @start_cod`;      
                                     }

我的perl脚本输出:

 print @start_cod;
aaaaaaaaaaaaaaaaaaacacacacacaacaccacaacaattatatattataattatatttat

我想添加标题,因为我的最终目的是在C程序中启动Perl输出以便成为:

>text
 aaaaaaaaaaaaaaaaaaacacacacacaacaccacaacaattatatattataattatatttat

我尝试过:

my @test = unshift (@start_cod, '>text');
 print @test; 

print ">text @start_cod"; 

哪些打印

aaaaaaaaaaaaaaaaaaa>textcacacacacaacaccacaac...>textaattatatattataattatatttat

然后,我意识到有许多\ n“破坏”了我想要的输出。我当时正在考虑先删除所有换行符,然后再打印> text,因此编辑了我的代码,如下所示:>

s/\s+\z//  for @start_cod;                     
    print  ">text@start_cod";

我也尝试过排骨

chomp @start_cod;                      
 print  ">text@start_cod";

my @start_cod = split("\n",$start_cod); 
  $start_cod = join("",@start_cod);
      print  ">text$start_cod";

也打印上面的输出。有什么建议如何处理吗?

我正在学习Perl,所以我正在编写一个脚本来处理fasta文件:我的文件:>名称aaaaaaaaaaaaaaaaaaaa> name2 acacacacacaacaccacaac。 。 。 > namex aattatatattataattatatttat这是我的...

perl fasta
1个回答
0
投票

您可以join打印的数组元素添加换行符。如果我正确理解了您的问题,则应该执行您想要的操作:

© www.soinside.com 2019 - 2024. All rights reserved.