IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

variable dans tableau


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut variable dans tableau
    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 :
    my $va1=45689;
    my $va2=dupont;
    my $va3=15612345;
    Je souhaiterai le résultat de ces variables soit dans un fichier comme l'exemple ci-dessous :
    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 ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Déclare des variables comportant les espaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($sp4, $sp8) = ("    ", "        ");
    ou bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $sp4 = " " x 4;
    my $sp8 = " " x 8;
    Ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $ligne = $var1 . $sp4 . $var2 . $sp8 . $var3 . "\n";

    Ou encore par interpolation directe dans une chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ligne = "$var1    $var2        $var3\n";

  3. #3
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    use strict;
    use warnings;
     
    my @row = (45689, 'dupont', 15612345);
    my $out = pack "A9A14A10", @row;
    print "$out\n";
    Tu as preciser que le premier et le second champ devaient toujours faire 9 et 14 characteres mais tu n'as rien dit pour le dernier donc j'ai mis 10 histoire que ca tienne. Tu n'as qu'a remplacer par la taille que tu desires.
    In code we trust !!

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    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.

  6. #6
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    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 !!

  7. #7
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    merci pour ta solution, je vais essayer de me débrouiller.

Discussions similaires

  1. [PHP 5.4] variable dans tableau
    Par jack091 dans le forum Langage
    Réponses: 10
    Dernier message: 26/05/2013, 18h51
  2. variable dans tableau et en gras
    Par dege44 dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2012, 16h20
  3. Variable dans tableau croisé
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/10/2008, 11h21
  4. Réponses: 3
    Dernier message: 22/03/2007, 13h09
  5. Réponses: 9
    Dernier message: 12/05/2006, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo