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

Programmation et administration système Perl Discussion :

Problème récupération de données perl


Sujet :

Programmation et administration système Perl

  1. #21
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Dans ton script, nulle part tu ne fais mention de ce critère de sélection, comment aurais-je pu le deviner ?
    Rappelle toi : je ne travaille pas à tes cotés, je ne sais pas sur quel sujet tu travailles, et je ne connais rien à SNMP ... si tu veux de l'aide, tu devrais faire l'effort d'exposer tes problèmes sans faire l'hypothèse que l'on connait tout le contexte de ta problématique...

    Pour en revenir à ton script :
    dans l'analyse du fichier "fichier$nombre.txt", si tu n'as pas besoin d'un tableau pour récupérer le nombre à 7 chiffres, je te conseille d'utiliser un scalaire, et de sortir de l'analyse dès que tu as trouvé ton nombre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    open (my $in,"<", "fichier$nombre.txt") || die "Le fichier n'existe pas !\n";
    my ($nb, @fichier_snmp);
    while (my $tablignes =<$in>) {
      push @fichier_snmp, $tablignes; # on sauve le fichier pour pouvoir le ré-écrire plus tard
      ($nb) = $tablignes =~ /\b(\d{7})\b/;
    }
    print "Le device ID de la TT $nombre est le suivant $nb\n";
    Ensuite, dans l'analyse de ton fichier "information.txt", tu dois rechercher les TT$nombre pour trouver le bon nombre à 7 chiffres (si tu pouvais nommer ce nombre, ça éviterait d'écrire "nombre à 7 chiffres"). Et là, pareil, si on ne cherche qu'une valeur, inutile d'utiliser un tableau @na

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      while (!defined $na && (my $line = <$var>)) {
        ($na) = $line =~ /TT$nombre\s+(\d{7})\b/;
      }
      close $var;
      print"Le tableau: $na \n";
    Par contre, je ne comprends pas la suite du script : tu demande au clavier la saisie d'un New Device ID ... est-ce que c'est la valeur à remplacer et que tu ne savais pas la récupérer dans le fichier information.txt, alors tu la demandes au clavier ??? ce n'est pas clair du tout !

    Une fois que tu auras répondu, on pourra s'attaquer à la ré-écriture du fichier "fichier$nombre.txt";
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  2. #22
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Par contre, je ne comprends pas la suite du script : tu demande au clavier la saisie d'un New Device ID ... est-ce que c'est la valeur à remplacer et que tu ne savais pas la récupérer dans le fichier information.txt, alors tu la demandes au clavier ??? ce n'est pas clair du tout !

    Une fois que tu auras répondu, on pourra s'attaquer à la ré-écriture du fichier "fichier$nombre.txt";
    La saisie du nouveau Device ID ne sert à rien, tu as raison. Il faut juste vérifier la cohérence des deux ID trouvés, et si la cohérence n'est pas bonne la changer automatiquement.

  3. #23
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Voici une version remaniée de ton script qui devrait faire ce que j'ai compris que tu voulais qu'elle fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my ($nombre, $nb, $na, @fichier_snmp);
    do {
      print "Which TT want to see? \n";
      $nombre = <STDIN>;            #saisie au clavier
      chomp($nombre);
    } while ($nombre !~ /^\d{1,2}$/);
    open (my $in,"<", "fichier$nombre.txt") || die "Le fichier n'existe pas !\n";
    while (my $tablignes = <$in>) {
      push @fichier_snmp, $tablignes; # on sauve le fichier pour pouvoir le ré-écrire plus tard
      ($nb) = $tablignes =~ /\b(\d{7})\b/ if !defined $nb;
    }
    close $in;
    if ($nb) {
      print "Le device ID de la TT $nombre est le suivant $nb\n";
     
      print "Which TT want to Modify (1), Verify (2) or exit (3) \n";
      my $i = <STDIN>;
      if ($i == 1) {
        modify();
      }
      if ($i == 2) {
        verify();
      }
      if ($i == 3) {
        exit();
      }
    }
    else {
      print "Pas de device ID trouvé pour la TT $nombre\n";
    }
    sub modify{
      my $na = verify();
      if ($na != $nb) {
        open (my $out,">", "fichier$nombre.txt") || die "Le fichier ne peut être édité !\n";
        print "Modification en cours\n";
        foreach my $line (@fichier_snmp) {
          $line =~ s/\b\d{7}\b/$na/g;
          print $out $line;
        }
        close $out;
      }
    }
    sub verify{
      open my $var, "<", "information.txt" or die "Le fichier information.txt ne peut être lu: $!\n";
      #open (my $var, "information.txt");
      my $na;
      while (!defined $na && (my $line = <$var>)) {
        ($na) = $line =~ /TT$nombre\s+(\d{7})\b/;
      }
      close $var;
      print"Le tableau: $na \n";
     
      return $na;
    }
    Le nommage des variables n'est pas très explicite, mais sans connaitre la signification des données, je ne peux pas faire mieux.
    La fonction Verifier est réutilisée dans Modifier pour récupérer la valeur du nombre à sept chiffres du fichier "information.txt". Cela dit, il faudrait (pour ces fonctions Modifier et Verifier, passer le $nombre en paramètre, ce serait plus propre).
    Il y a sans doute d'autres amélioration à apporter, mais cette version semble fonctionnelle sur l'exemple que tu m'as fournit en message privé (confidentialité oblige).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #24
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Voici une version remaniée de ton script qui devrait faire ce que j'ai compris que tu voulais qu'elle fasse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my ($nombre, $nb, $na, @fichier_snmp);
    do {
      print "Which TT want to see? \n";
      $nombre = <STDIN>;            #saisie au clavier
      chomp($nombre);
    } while ($nombre !~ /^\d{1,2}$/);
    open (my $in,"<", "fichier$nombre.txt") || die "Le fichier n'existe pas !\n";
    while (my $tablignes = <$in>) {
      push @fichier_snmp, $tablignes; # on sauve le fichier pour pouvoir le ré-écrire plus tard
      ($nb) = $tablignes =~ /\b(\d{7})\b/ if !defined $nb;
    }
    close $in;
    if ($nb) {
      print "Le device ID de la TT $nombre est le suivant $nb\n";
     
      print "Which TT want to Modify (1), Verify (2) or exit (3) \n";
      my $i = <STDIN>;
      if ($i == 1) {
        modify();
      }
      if ($i == 2) {
        verify();
      }
      if ($i == 3) {
        exit();
      }
    }
    else {
      print "Pas de device ID trouvé pour la TT $nombre\n";
    }
    sub modify{
      my $na = verify();
      if ($na != $nb) {
        open (my $out,">", "fichier$nombre.txt") || die "Le fichier ne peut être édité !\n";
        print "Modification en cours\n";
        foreach my $line (@fichier_snmp) {
          $line =~ s/\b\d{7}\b/$na/g;
          print $out $line;
        }
        close $out;
      }
    }
    sub verify{
      open my $var, "<", "information.txt" or die "Le fichier information.txt ne peut être lu: $!\n";
      #open (my $var, "information.txt");
      my $na;
      while (!defined $na && (my $line = <$var>)) {
        ($na) = $line =~ /TT$nombre\s+(\d{7})\b/;
      }
      close $var;
      print"Le tableau: $na \n";
     
      return $na;
    }
    Le nommage des variables n'est pas très explicite, mais sans connaitre la signification des données, je ne peux pas faire mieux.
    La fonction Verifier est réutilisée dans Modifier pour récupérer la valeur du nombre à sept chiffres du fichier "information.txt". Cela dit, il faudrait (pour ces fonctions Modifier et Verifier, passer le $nombre en paramètre, ce serait plus propre).
    Il y a sans doute d'autres amélioration à apporter, mais cette version semble fonctionnelle sur l'exemple que tu m'as fournit en message privé (confidentialité oblige).
    Good Job Par contre, les sous fonctions n'ont pas l'air de marcher quand je rentre dedans. Cependant, la première phase me récupère bien le Device ID, ceci est correct.

  5. #25
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Les fonctions Verify et Modify font quelque chose chez moi, avec le fichier SNMP que tu m'as donné en privé.
    Comment vois-tu qu'elles ne font rien ? tu es allé voir en mode debug ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #26
    Candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juin 2015
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    J'ai rien dit cela marche maintenant Merci beaucoup de ton aide ! Je vais mettre "résolu" du coup, merci pour ta patience

  7. #27
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Si tu aimes :
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. problème récupération de données en liaison série
    Par prison_break dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/06/2007, 08h51
  2. [VB6] Problème récupération de données
    Par valie dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 29/08/2006, 12h36
  3. problème récupération de données dans des fichiers .DAT
    Par indymontpellier dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/04/2006, 07h54
  4. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 14h48
  5. [Débutant] Problème récupération de données
    Par flogreg dans le forum Servlets/JSP
    Réponses: 26
    Dernier message: 20/08/2004, 17h29

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