У меня есть два различных входных файлов из атома зонда:Как написать несколько выходных файлов в цикле foreach в perl?
1) POS файл с 4 колонки, 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 для всех точек данных с «я» значение между $min
и $max
и хранить эти пункты, как х, у , z и i в выходном файле, но я хочу сделать это для всех 51 диапазонов значений «i».
Этот код отлично подходит для одного пика без цикла foreach, но я не хочу его жестко кодировать для 51 разных диапазонов.
Я надеюсь, что это ясно. Благодарю.
пытается понять, но ваш код doen't содержит никаких 'i'. Итак, откуда приходит «я»? (в коде '3' есть' i'?) И для чего вы хотите использовать 'i'? – jm666
@ jm666 О, извините, значение «i» - это данные в четвертом столбце моего входного файла POS, который представлен кодом '$ row [3]' в коде. –