|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Nouveau Membre du Club
![]() Inscription : mars 2006 Messages : 515 ![]() |
Bonjour,
J'ai un certain nombre de variable que je souhaiterai placé sur une ligne dans un fichier, mais dans des positions prédéfinis. exemple : Citation:
45689 dupont 15612345 Entre les variables, je veux mettre un certain nombre d'espace, entre le 9 et d, je souhaiterai 4 blanc. Entre t et 1, 8 blancs. En sachant que le premier caractére de ma variable $va3, doit toujours être en position 23. Ma variable $2, en position 9....... Comment puis je faire ? |
|
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 588 ![]() |
Déclare des variables comportant les espaces:
ou bien: Code :
Code :
my $ligne = $var1 . $sp4 . $var2 . $sp8 . $var3 . "\n"; Ou encore par interpolation directe dans une chaîne de caractères:
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
||
|
|
00
|
|
|
#3 | ||
|
Membre régulier
![]() Inscription : mai 2002 Messages : 105 ![]() |
Il semble que tu souhaite rendre tes donnees au dans un format fixed-width.
Dans ce cas tu devrait utiliser pack, particulierement bien adapte a ce genre de fonction: Code :
__________________
In code we trust !! |
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : mars 2006 Messages : 515 ![]() |
Je pense que je me suis mal exprimé dans ma demande.
En fait, je dois créer une ligne qui ne dépasse pas 160 caractéres. Chaque zone correspond à des données bien définis. Par exemple Le matricule sur 5 caractéres, doit être en position 1. Le Nom de la personne sur 20 caracteres maximum doit etre en position 6. le prenom de la personne sur 10 caracters en position 26. Comment puis je faire, en sachant que par exemple pour le nom, il peut y avoir que 10 caractéres, donc le reste serait combler par des blancs. Merci |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 588 ![]() |
La fonction pack proposée par Elvivo ajoutera les caractères de bourrage nécessaires. Sinon, il y a aussi la fonction sprintf qui peut faire la même chose, mais ce sera souvent un peu plus compliqué. Et aussi la fonction format, plus orientée format de la ligne complète.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : mai 2002 Messages : 105 ![]() |
Disons que pack pour de l'ascii c'est simple pour des formats plus exotics ca peur devenir assez tordu
Sinon il te suffit d'adapter la solution que j'ai donner en modifiant les tailles que j'ai mis. Chaque nombre dans le premier argument de pack represent la taille d'un champ donc il te suffit de changer pour coller au format final.
__________________
In code we trust !! |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : mars 2006 Messages : 515 ![]() |
merci pour ta solution, je vais essayer de me débrouiller.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com