Вы хотите использовать параметры формата perl для представления выходных данных заранее определенными способами.
Вы можете прочитать об этом здесь .
Ваш пример немного переписан:
for ($x = 0.000; $x < 4.200; $x += 1.400) {
for ($y = 0.000; $y < 4.200; $y += 1.400) {
for ($z = 0.000; $z < 4.200; $z += 1.400) {
write;
}
}
}
format STDOUT_TOP =
1-6 7-11 13-16 18-20 23-26 31-38 39-46 47-54 77-78
(Name) (S.No) (x) (y) (z)
.
format STDOUT =
HETATM 1 O HOH 1 @<<<<<< @<<<<<< @<<<<<< N
$x $y $z
.
FORMAT_TOP
печатается каждые $=
(или $FORMAT_LINES_PER_PAGE
), поэтому сбросьте эту переменную, если хотите, чтобы она печаталась реже, или смехотворно большим числом, если вы хотите, чтобы она печаталась только один раз.
Пример вывода:
1-6 7-11 13-16 18-20 23-26 31-38 39-46 47-54 77-78
(Name) (S.No) (x) (y) (z)
HETATM 1 O HOH 1 0 0 0 N
HETATM 1 O HOH 1 0 0 1.4 N
HETATM 1 O HOH 1 0 0 2.8 N
HETATM 1 O HOH 1 0 0 4.2 N
HETATM 1 O HOH 1 0 1.4 0 N
HETATM 1 O HOH 1 0 1.4 1.4 N
HETATM 1 O HOH 1 0 1.4 2.8 N
HETATM 1 O HOH 1 0 1.4 4.2 N
У меня есть еще одна проблема: когда я печатаю числа с десятичными точками, как
HETATM 1 O HOH 1 -10 -3.4 -8 N
HETATM 1 O HOH 1 -10 -3.4 -6.6 N
HETATM 1 O HOH 1 -10 -3.4 -5.2 N
HETATM 1 O HOH 1 -10 -3.4 -3.8 N
HETATM 1 O HOH 1 -10 -3.4 -2.4 N
HETATM 1 O HOH 1 -10 -3.4 -1 N
HETATM 1 O HOH 1 -10 -3.4 0.4 N
HETATM 1 O HOH 1 -10 -3.4 1.8 N
HETATM 1 O HOH 1 -10 -3.4 3.2 N
HETATM 1 O HOH 1 -10 -3.4 4.6 N
HETATM 1 O HOH 1 0 -3.4 6 N
В приведенных выше столбцах мне нужно напечатать десятичную точку в том же индексе. Когда я делаю вычисления и обновляю значения, точки в десятичных числах смещаются. мне нужен вывод как
HETATM 1 O HOH 1 -10 -3.4 -8.0 N
HETATM 1 O HOH 1 -10 -3.4 -6.6 N
HETATM 1 O HOH 1 -10 -3.4 -5.2 N
HETATM 1 O HOH 1 -10 -3.4 -3.8 N
HETATM 1 O HOH 1 -10 -3.4 -2.4 N
HETATM 1 O HOH 1 -10 -3.4 -1.0 N
HETATM 1 O HOH 1 -10 -3.4 0.4 N
HETATM 1 O HOH 1 -10 -3.4 1.8 N
HETATM 1 O HOH 1 -10 -3.4 3.2 N
HETATM 1 O HOH 1 -10 -3.4 4.6 N
HETATM 1 O HOH 1 -10 -3.4 6.0 N
Редактировать 1 :
Пример файла дампа:
open(DUMPFILE,">output.txt");
for ($x = 0.000; $x < 4.200; $x += 1.400) {
for ($y = 0.000; $y < 4.200; $y += 1.400) {
for ($z = 0.000; $z < 4.200; $z += 1.400) {
write DUMPFILE;
}
}
}
close(DUMPFILE);
format DUMPFILE_TOP =
1-6 7-11 13-16 18-20 23-26 31-38 39-46 47-54 77-78
(Name) (S.No) (x) (y) (z)
.
format DUMPFILE =
HETATM 1 O HOH 1 @<<<<<< @<<<<<< @<<<<<< N
$x $y $z
.