2

我有两个来自原子探针的不同输入文件:

1)4列的POS文件,xyzi(我从二进制转换而来)

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并将$max这些点存储为输出文件中的 x、y、z 和 i 列,但我想对所有 51 个范围执行此操作“i”值。

此代码适用于没有 foreach 循环的一个峰值,但我不想将其硬编码为 51 个不同的范围。

我希望这很清楚。谢谢。

4

1 回答 1

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;
}

只需打开多个文件句柄并打印到每个文件句柄。

于 2013-07-10T18:02:38.117 回答