我正在学习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这是我的...
您可以join
打印的数组元素添加换行符。如果我正确理解了您的问题,则应该执行您想要的操作: