open(FILE,">h2o_calc.pdb") or die("Erreur d'=E9criture");
# D=E9finition de la fonction qui ajoute un atome dans le fichier .pdb
sub print_atom {
printf(FILE "ATOM %d %s %1.3f %1.3f
%1.3f"."\n",
$_[0],$_[1],$_[2],$_[3],$_[4]);
}
# Calcul de pi (petite astuce vieille comme le monde informatique)
$pi =3D 4*atan2(1, 1);
# D=E9finition des constantes
# Liaison O-H 0.0957nm =3D 0.957A (et pas 0,957)
# Angle 104.52=B0
$l_OH =3D 0.957;
$alpha =3D 104.52*$pi/180; # angle en rad
# En t=EAte du fichier .pdb
print FILE "HEADER"."\n";
print FILE "COMPND H2O calc"."\n";
print FILE "HEAD"."\n";
# Partie centrale du fichier .pdb (ex : mol=E9cule d'eau)
#&print_atom(num=E9ro_atome_dans_le_fichier_pdb, symbole_de_l_atome,
# x,
# y,
# z
# );
il suffit de remplacer %1.3 par % 1.3 et d'enlever un espace avant le %
Désolé pour le bruit
Paul Gaborit
À (at) 23 Nov 2006 13:08:21 -0800, "" écrivait (wrote):
Bon en fait j'ai trouvé
il suffit de remplacer %1.3 par % 1.3 et d'enlever un espace avant le %
Désolé pour le bruit
Sauf qu'il semble que vous n'aevz pas encore complètement compris le fonctionnement du 'format' de printf. Dans la documentation Perl, toutes les explications sont dans 'perlfunc' à l'item de la fonction 'sprintf' :
perldoc -f sprintf
On y trouve effectivement l'ajout de l'espace pour placer soit un espace soit un moins selon que la valeur est positive ou négative.
Mais il y est aussi expliqué que le premier chiffre est la longueur *totale* *minimale* du champ contenant un nombre et non celle de sa partie entière. Donc si vous souhaitez aligner des nombres avec 3 décimales et un signe (sous la forme d'un espace ou d'un moins), cela fait une longueur minimale de 3 (les décimales) + 1 (la séparateur décimal) + 1 (le signe) + 1 (la partie entière) et donc un format du genre :
% 6.3f
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 23 Nov 2006 13:08:21 -0800,
"noone@nowhere.undef" <s.celles@gmail.com> écrivait (wrote):
Bon en fait j'ai trouvé
il suffit de remplacer %1.3 par % 1.3 et d'enlever un espace avant le %
Désolé pour le bruit
Sauf qu'il semble que vous n'aevz pas encore complètement compris le
fonctionnement du 'format' de printf. Dans la documentation Perl,
toutes les explications sont dans 'perlfunc' à l'item de la fonction
'sprintf' :
perldoc -f sprintf
On y trouve effectivement l'ajout de l'espace pour placer soit un
espace soit un moins selon que la valeur est positive ou négative.
Mais il y est aussi expliqué que le premier chiffre est la longueur
*totale* *minimale* du champ contenant un nombre et non celle de sa
partie entière. Donc si vous souhaitez aligner des nombres avec 3
décimales et un signe (sous la forme d'un espace ou d'un moins), cela
fait une longueur minimale de 3 (les décimales) + 1 (la séparateur
décimal) + 1 (le signe) + 1 (la partie entière) et donc un format du
genre :
% 6.3f
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 23 Nov 2006 13:08:21 -0800, "" écrivait (wrote):
Bon en fait j'ai trouvé
il suffit de remplacer %1.3 par % 1.3 et d'enlever un espace avant le %
Désolé pour le bruit
Sauf qu'il semble que vous n'aevz pas encore complètement compris le fonctionnement du 'format' de printf. Dans la documentation Perl, toutes les explications sont dans 'perlfunc' à l'item de la fonction 'sprintf' :
perldoc -f sprintf
On y trouve effectivement l'ajout de l'espace pour placer soit un espace soit un moins selon que la valeur est positive ou négative.
Mais il y est aussi expliqué que le premier chiffre est la longueur *totale* *minimale* du champ contenant un nombre et non celle de sa partie entière. Donc si vous souhaitez aligner des nombres avec 3 décimales et un signe (sous la forme d'un espace ou d'un moins), cela fait une longueur minimale de 3 (les décimales) + 1 (la séparateur décimal) + 1 (le signe) + 1 (la partie entière) et donc un format du genre :
% 6.3f
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>