我對ealier文章有跟進問題。 相關的帖子是: Perl iterating through each line in a file and appending to the end of each line in another filePerl遍歷文件中的每一行,並追加到另一個文件中每行的末尾 - 跟進
我用:
use warnings;
use strict;
open my $animals, '<', 'File1.txt' or die "Can't open animals: $!";
open my $payloads, '<', 'File2.txt' or die "Can't open payloads: $!";
my @payloads = <$payloads>; #each line of the file into an array
close $payloads or die "Can't close payloads: $!";
while (my $line = <$animals>) {
chomp $line;
print $line.$_ foreach (@payloads);
}
close $animals or die "Can't close animals: $!";
這工作得很好,看起來像這樣的文件:
file 1: file 2:
line1 lineA
line2 lineB
line3 lineC
而不是看起來像這樣的文件:
<01 line1
<02 line2
所以我想要做的是以下幾點:
file 1: file 2:
<01 line1 <AA lineAA
<02 line2 <AB lineAB
應該變成:
file 3:
<01_AA line1lineAA
<01_AB line1lineAB
<02_AA line2lineAA
<02_AB line2lineAB
我曾嘗試通過使用標籤上分割字符串來解決它,而在while循環(見下文),但我不能讓循環它工作。
我的腳本:
#!C:/perl64/bin/perl.exe
use warnings;
use strict;
open my $file1, '<', 'file1.fasta' or die "Can't open file1: $!";
open my $file2, '<', 'file2.fasta' or die "Can't open file2: $!";
open(OUT, '>', 'file3.fasta') or die "Cannot write $!";
while (<$file2>)
{
chomp;
my ($F2_Id, @SF2_seq) = split (/\t/, $_);
while (<$file1>)
{
chomp;
my ($F1_Id, @F1_seq) = split (/\t/, $_);
foreach my $seq (@F1_seq)
{
print OUT $F1_Id,"_",$F2_Id,"\t",$seq.$_ foreach (@F2_seq),"\n";
}
close;
}
}
我開始用Perl就在最近,所以我可以想像,有很多腳本故障。
對於真的很長的帖子我很抱歉,但我會appriciate任何幫助。
是否所有行都看起來像「<01 line1」或者它只是其中的一部分? – fugu
是的所有線條看起來像<01 line1 – Paeseitje