Forum Programmation.perl help srcipt perl comparaison de deux fichiers

Posté par  .
Étiquettes :
-1
12
mar.
2012

Bonjour je dois faire un script pour comparer deux fichier et je ne sais pas vraiment comment mi prendre..

fic1 du style

test robert anna jaques cyril
sb001 aa bb cc aa
sb002 aa cc bb uu
sb003 aa uu cc bb

fic 2 du style

test anais roberta jaques nicolas
sb002 aa cc—uu
sb008 aa cc bb uu
sb009 aa cc bb uu

pour le—c'est une donnée manquante

en faite je dois comparer les deux fichiers

en gros il doit ressortir un fichier3

comme celui la

test robert anna jaques cyril anais roberta nicolas
sb001 aa bb cc aa—-- --
sb002 aa cc bb uu aa cc—uu
sb003 aa uu cc bb—-- --
sb008—-- bb—aa cc uu
sb009—--bb—aa cc uu

pour resumer le fichier 3
on fusionne les données redondante exemple pour jaques qui est dans les deux fichiers
et on fusionne les données pour les test redondant comme sb002 dans l'exemple

merci si vous avez des pistes pour m'aider je rames…

  • # va relire ton cours ;)

    Posté par  . Évalué à 2.

    typiquement ca ressemble à un devoir d'etudiant,
    relire son cours serait deja une bonne piste.

    ca va te parler :
    - de boucles imbriquées
    - de lire un fichier, ligne par ligne,
    - de stocker/comparer des resultats
    - puis d'ecrire dans un fichier de sortie

  • # re

    Posté par  . Évalué à 0.

    j'ai commencé le script

    ouverture des fichiers
    lectures

    mais c'est au niveau de la comparaison que je sais pas comment mi prendre

    • [^] # Re: re

      Posté par  . Évalué à 2.

      Mettons que tu lises la première ligne de chaque fichier :

      open FIC1, "<fic1";
      open FIC2, "<fic2";
      $l1 = <FIC1>;
      $l2 = <FIC2>;
      chomp $l1;
      chomp $l2;
      
      

      Tu décomposes les arguments :

      @args1 = split / /, $l1;
      @args2 = split / /, $l2;
      
      

      Tu veux maintenant savoir si @args2 contient une des chaines de @args1. Même si tu ne vois pas de construction perl courte pour faire ça, tu dois bien savoir faire deux boucles imbriquées qui parcourent l'un et l'autre et regardent, pour chaque paramètre de @args1, s'il est dans @args2 et mémoriser la position. Si tu le prends comme ça c'est de l'algorithmique, y'a rien de spécifique à perl. Mais après ça dépend de ton cours, peut-être ton prof veut que tu utilises la construction map.

  • # re

    Posté par  . Évalué à -1.

    j'ai déjà fais toute la parti ouverture,
    j'ai fai une boucle aussi pour une lecture pour toutes les lignes du fichiers jusqu'à la je pense être bon
    c'est maintenant que je bloques c'est pas un exco pour un prof je suis en stage je dois travailler deux fichier excel pour en faire plus qu'un en fusionnant les doublon et en comparant chaque ligne pour remplir les données manquantes

  • # re

    Posté par  . Évalué à -1.

    comment on fait pour mettre le code sur le forum apparemment il veut pas me le publier…
    comme ca je vous envoie ce que j'ai fai deja

    • [^] # Re: re

      Posté par  . Évalué à 3.

      comment on fait pour mettre le code sur le forum

      Juste au dessous de la boite pour entrer un message, tu trouves « aide mémoire sur la syntaxe wiki » et ça t'explique comment on met du code et bien d'autres choses. Note que la prévisualisation fait correction orthographique.

  • # re

    Posté par  . Évalué à -1. Dernière modification le 12 mars 2012 à 14:51.

    • [^] # Re: re

      Posté par  (site web personnel) . Évalué à 1.

      Si tu tiens à nous donner ton code, utilise au moins un outil fait pour ça : http://pastebin.com/
      Parce que ta capture d'écran, franchement, si on veut t'aider, on n'a pas forcément envie de tout réécrire.

      Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

      • [^] # Re: re

        Posté par  (site web personnel) . Évalué à 1.

        Chier, le temps d'écrire et boum, je peux plus modifier… :(

        Bon, sinon je vais être gentil : je pense que tu devrais utiliser une table de hashage, histoire de te retrouver avec un truc du genre

        print $foo{jacques}{sb001} # donne aa;
        print $foo{jacques}{sb002} # donne bb;
        
        

        Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

        • [^] # Commentaire supprimé

          Posté par  . Évalué à 2.

          Ce commentaire a été supprimé par l’équipe de modération.

          • [^] # Re: re

            Posté par  . Évalué à 4.

            Le principe de Perl, c'est pas que l'on ne peut pas expliquer le code de quelqu'un d'autre? /o

            Depending on the time of day, the French go either way.

            • [^] # Re: re

              Posté par  (site web personnel) . Évalué à 2.

              Non, c'est de pas pouvoir expliquer son propre code 6 mois plus tard ! :D

              Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

          • [^] # Re: re

            Posté par  (site web personnel) . Évalué à 1.

            Je voulais être gentil, pas lui macher le boulot non plus ! ;)

            Le problème, c'est qu'il risque d'utiliser ton snippet sans comprendre.

            C'est du beau perl cela dit, j'aime beaucoup.

            Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

      • [^] # Re: re

        Posté par  (site web personnel) . Évalué à 2.

        Je trouve que c'est une bonne méthode pour éviter le copier-collé bourrin. Ça force au moins à retaper, en espérant que quelque chose soit appris au passage !

        • [^] # Re: re

          Posté par  (site web personnel) . Évalué à 1.

          Oui mais non : parce que là, c'est celui qui demande de l'aide qui file un screenshot. Donc les gentils gens qui veulent l'aider se font chier.

          Après, dans l'autre sens (solution donnée en screenshot), je suis pour ! :D

          Being a sysadmin is easy. As easy as riding a bicycle. Except the bicycle is on fire, you’re on fire and you’re in Hell.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.