我有两个来自原子探针的不同输入文件:
1)包含4列的POS文件,x y z i(我从二进制转换)
2)RRNG文件,包含样本中原子的信息及其对应的“i”值。
我能够从输入文件中提取所有必要的信息并将它们存储到数组中,但是当我尝试将信息保存到多个输出文件时出现问题。
这是我到目前为止所做的:
foreach $j (0..50) { #there are 51 peaks in this data set
$min = $range_min[$j];
$max = $range_max[$j];
open(POS,$ARGV[1]);
while(sysread(POS,$xyzi,16)) { #input is binary
@row=unpack("f>4",$xyzi);
if ($row[3]>$min && $row[3]<=$max) { #if "i" value within
#the given range
open(FILE,">file$min_$max.txt");
print FILE join(" ",@row[0,1,2,3]) . "\n";
}
}
}
我想要的是在POS文件中搜索“{i}”和$min
之间的“i”值的所有数据点,并将这些点存储为x,y,z和i列中的输出文件,但我想对所有51个“i”值范围执行此操作。
此代码适用于没有foreach循环的一个峰值,但我不想对51个不同范围进行硬编码。
我希望这很清楚。感谢。
答案 0 :(得分:1)
这是一个基本的例子:
open my $fin, '<', $inputfile or die $!;
open my $fout1, '>', $filename1 or die $!;
open my $fout2, '>', $filename2 or die $!;
while( my $line = <$fin> ) {
print $fout1 $line;
print $fout2 $line;
}
只需打开多个文件句柄并打印到每个文件句柄。