У меня есть файл со следующими данными. Я хочу напечатать во внешнем файле с суммой из каждых 9 строк. Вот мои данные.Нужна помощь в Perl looping
file.xyz
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
-0.485718003092488 3.25568455554021 -0.60544991716881
-1.01253068155602 -2.49251542491767 0.713923699625837
0.791137982988487 -2.56492609246597 -0.853251541212567
Мой вывод выглядит
-2.5 -5.405270886 -2.234333276 6.221675693
-2.5 -5.405270886 -2.234333276 6.221675693
Если первая строка сумма 1-9 и вторая линия сумма от 10-18. Здесь данные одинаковы для первых 9 и последних 9 строк, он дает то же значение. Я хочу напечатать сумму из всех строк больших файлов с тысячами строк.
Вот мой код, он вычисляет общую сумму, но мне нужно разделить на две части, как указано выше.
Благодарим за помощь и ценю.
my @sums;
open FILE, "file.xyz" or die "Can't find";
while(<FILE>) { # there is FILE written within angular brackets
my @summands = split//;
foreach my $i (0 .. $#summands) {
$sums[$i] += $summands[$i];
}
}
$total = sqrt($sums[0]*$sums[0]+$sums[1]*$sums[1]+$sums[2]*$sums[2]);
print "$sums[0], $sums[1], $sums[2], $total\n";
Я думаю, что вы хотите, чтобы сумма каждых 9 строк, не колонны. Лучше использовать три аргумента формы «открыть», чтобы открыть файл. Вы можете использовать '$ row_number% 9 == 0', чтобы проверить, делится ли текущая строка на 9. – sockmonk
Здравствуйте @sockmonk, Да, это НЕ столбцы, это строки. Где я могу добавить это? это то, что мне нужно. Мне нужен новый цикл, который подсчитывает строки и печатает до тех пор, и снова запустит цикл ... Я плохо разбираюсь в программировании. – bikesh
Спасибо всем. Это много значит для меня ... – bikesh