# copy headers to output my $headerA = <$dataA> . <$dataA>; my $headerB = <$dataB> . <$dataB>; print $dataC "__dataC__\n$headerA"; while (1) { last if (eof($dataA) or eof($dataB)); my @A = (split( /\s+/, <$dataA>))[0..3]; my @B = (split( /\s+/, <$dataB>))[0..3]; my $avgX = ($A[0] + $B[0])/2; my $avgY = ($A[1] + $B[1])/2; my $avgZ = ($A[2] + $B[2])/2; my $difF = ($A[3] - $B[3]); printf $dataC "%E %E %E %E\n", $avgX, $avgY, $avgZ, $difF; }