以下は、タブ区切りの出力ファイルを受け取り、同じくタブ区切りの 3 つの異なるテキスト ファイルを出力する perl スクリプトです。SO の別のユーザーが、出力ファイルの各行の最後に余分な空白を作成する間違いを修正するのを手伝ってくれました。ただし、代わりにカンマ区切りのテキストを出力したいと考えています。print $Afile join( ",", @ADD) , "\n";
代わり に置き換えるprint $Afile join( "\t", @ADD) , "\n";
と、出力ファイルの各行の末尾に 2 つの末尾のコンマが表示されます。これらはどこから来たのですか?
#!/usr/bin/perl
use strict; use warnings;
die "usage: [ imputed genotype.file ]\n" unless @ARGV == 1;
open my $Afile, ">$imputed" . "_ADD.txt" or die $!;
open my $Dfile, ">$imputed" . "_DOM.txt" or die $!;
open my $Ifile, ">$imputed" . "_IMP.txt" or die $!;
<>; #skip header
while(<>){
chomp;
my @entries = split( '\t', $_ );
my @ADD = ();
my @DOM = ();
my @IMP = ();
push( @ADD, $entries[ 0 ], $entries[ 1 ], $entries[ 2 ]);
push( @DOM, $entries[ 0 ], $entries[ 1 ], $entries[ 2 ]);
push( @IMP, $entries[ 0 ], $entries[ 1 ], $entries[ 2 ]);
for ( my $i = 3; $i < scalar @entries - 1 ; $i+=3 ) { ### for each entry per line
push( @ADD, $entries[ $i ] );
push( @DOM, $entries[ $i + 1 ] );
$entries[ $i + 2 ] =~ s/^NA$//;
push( @IMP, $entries[ $i + 2 ] );
}
print $Afile join( "\t", @ADD) , "\n";
print $Dfile join( "\t", @DOM) , "\n";
print $Ifile join( "\t", @IMP) , "\n";
} ### for loop
close $Afile;
close $Dfile;
close $Ifile;