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 :

diff de fichier et envoi de mail automatique


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut diff de fichier et envoi de mail automatique
    Bonjour tout le monde,

    Je vous sollicite parce que je ne sais pas par quel bout prendre mon problème. Si vous pouvez me donner des pistes pour que je puisse commencer. Merci d'avance

    Mon problème :
    Tous les jours un équipement réseau est sauvegardé (Fichier Binaire). Cette sauvegarde comporte la date et heure du jour de la sauvegarde.

    Au bout de quelques jours, j'ai donc :

    /sauvegarde/conf_20070205-0807
    /sauvegarde/conf_20070206-0807
    /sauvegarde/conf_20070207-0807


    Le but est de faire un script qui vérifie si le fichier binaire du jour en cours à changer du jour J-1 et si il a changé d'envoyer un mail pour avertir qu'il y a eu une modification.

    Encore merci pour les pistes que vous pourrez m'apportez.

  2. #2
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Salut.

    Si j'ai bien compris ton problème, tu n'as pas besoin d'identifier la différence de manière précise, mais uniquement de savoir si les 2 fichiers sont identiques, et si ils ne le sont pas, simplement envoyer le mail ?

    Pour vérifier l'égalité des deux fichiers, une solution bête, méchante, mais efficace pour des fichiers pas trop gros, et si possible en mode texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sub compare() {
      ($aFileName, $bFileName) = @_;
      open FILEA, "<$aFileName";
      open FILEB, "<$bFileName";
      $isStillEqual = (1 eq 1);
      while (($line_a=<FILEA>) and ($line_b=<FILEB>) and ($isStillEqual) )
      {
        $isStillEqual = ($isStillEqual and ($line_a eq $line_b));
      }
      close FILEA;
      close FILEB;
      return $isStillEqual;
    }
    Evidemment, le code que j'ai mis est une ébauche qui ne gère pas les problèmes possible d'I/O, etc ... pour ça, il y a déjà pas mal de doc.

    Pour l'envoi du mail, tu peux simplement passer par le module MIME::Lite qui va bien.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Tu as bien compris le problème yjuliet,

    Comme je débute en Perl je vais mettre un peu de temps à comprendre la fonction que tu as décris mais ca va le faire

    Pour le moment j'ai commencé à regarder comment récupérer les 2 derniers fichiers.

    Pour ca, je vois deux solutions

    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
     
    #retournes les 2 derniers fichiers de confs
    sub lastfiles  {
     
            my @files = </mon Rep/*>;
     
            # Aucun fichiers
            return ( undef , undef ) if( @files == 0 );
     
            # un seul fichier
            return ( $files[0] , undef ) if( @files == 1 );
     
            # Au moins 2 fichiers
            return( $files[@files-1], $files[@files-2]);
     
            }
    Le problème si je fais comme ca c'est qu'il n'y pas de vérification sur l'ancienneté des fichiers

    Je pensais donc faire autrement et utiliser le module Date::Calc pour trouver le fichier avec la date courante et le fichier date courante J-1.

    Est-ce la bonne solution ?

    Une fois que j'aurais trouvé ca je pourrais appliquer ta fonction aux 2 fichiers

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Bon j'arrive vraiment pas à m'en sortir. Ca veux pas. Ca coince. Ca me met les nerfs a vif

    Voila le code
    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
     
    my $CONFXML             = "Repertoire/XML";
     
    sub compare() {
      my ($aFileName, $bFileName) = @_;
      open FILEA, "<$aFileName";
      open FILEB, "<$bFileName";
      my $isStillEqual = (1 eq 1);
      while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and (my $isStillEqual) )
      {
       $isStillEqual = ($isStillEqual and ($line_a eq $line_b));
      }
      close FILEA;
      close FILEB;
    print "$isStillEqual\n";
      return $isStillEqual;
    }
     
     
     
    opendir(DIR, $CONFXML) || die "$CONFXML: $!";     
    my @fichiers = readdir(DIR);  
    closedir(DIR);
     
    foreach my $fichiers (@fichiers) {
            chomp $fichiers;
     
    # On affecte au variable $aFileName $bFileName le fichier trouve
                            if ($fichiers =~ /$HIER.*/g) {
                                    my $aFileName = $fichiers;
                                    print "$aFileName\n";
                            }
                            if ($fichiers =~ /$TODAY.*/g) {
                                    my $bFileName = $fichiers;
                                    print "$bFileName\n";
                            }
    }
     
    &compare (my $aFileName,my $bFileName);
    $HIER et $TODAY correspondant a la date d'aujourd'hui et d'hier calculé par une autre fonction.

    J'arrive a bien a affecté les bons fichiers au variables $aFileName et $bFileName

    Mon problème c'est qu'a l'execution du script j'ai les messages suivants :
    Use of uninitialized value in concatenation (.) or string at ./SA.pl line 71.
    Use of uninitialized value in concatenation (.) or string at ./SA.pl line 72.
    readline() on closed filehandle FILEA at ./SA.pl line 74.
    1

    les lignes 71, 72 et 74 sont

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    open FILEA, "<$aFileName";
    open FILEB, "<$bFileName";
    while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and (my $isStillEqual) )
    Quelqu'un a une idée du problème ?

  5. #5
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    C'est normal: tu passes des variables non initialisées à ta sub:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    &compare (my $aFileName,my $bFileName);
    du coup quand ta sub les reçoit, elles sont à la valeur undef.
    Or, tu essaies de les ouvrir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub compare() {
      my ($aFileName, $bFileName) = @_;
      open FILEA, "<$aFileName";
      open FILEB, "<$bFileName";
    du coup, il te dit que $aFileName et$bFileName sont indéfinis dans ta sub, et que du coup tu ne peux pas les ouvrir...

    Ce qu'il te faut, c'est modifier ton appel:

    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
     
    my ($aFileName, $bFileName);
     
    foreach my $fichier (@fichiers) {
            chomp $fichier;
            # On affecte au variable $aFileName $bFileName le fichier trouve
            if ($fichier =~ /$HIER.*/g) {
               my $aFileName = $fichier;
            }
            elsif ($fichier =~ /$TODAY.*/g) {
               my $bFileName = $fichier;
            }
    }
     
    die("aFileName non défini\n"), unless($aFileName) ;
    die("bFileName non défini\n"), unless($bFileName) ;
    die("aFileName [$aFileName] n'existe pas\n"), unless(-e $aFileName) ;
    die("bFileName [$bFileName] n'existe pas\n"), unless(-e $bFileName) ;
     
    &compare ($aFileName, $bFileName);

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  6. #6
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    n'y-a-t'il pas maintenant une question de chemin d'accès au fichier, vu que ces fichiers ne sont pas dans le répertoire courant ?

    Il me semble qu'il faudrait rajouter le chemin dans les ouvertures de fichier du compare() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open FILEA, "<$CONFXML/$aFileName";
    Peut-être fais-je erreur ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Bonjour tous le monde.

    Alors, j'ai testé avec le code de MarneusCalgarXP mais ca fonctionne pas non plus . J'obtiens ca :

    Value of <HANDLE> construct can be "0"; test with defined() at ./test.pl line 74.
    20070213
    20070214
    =====LANCEMENT DU SCRIPT=====
    XmlConf-20070214-1307
    XmlConf-20070213-1307
    aFileName non defini


    Je trouve bien les 2 fichiers a comparer (XmlConf-20070214-1307 et XmlConf-20070213-1307)
    La ligne 74 c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and (my $isStillEqual) )
    J'ai essayé en rajoutant le chemin complet mais ca change rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open FILEA, "<$CONFXML/$aFileName";

  8. #8
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Ton problème vient du 3° test, tu redéclares une nouvelle variable isstillequal, qui a donc une valeur indéfinie à chaque fois !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and (my $isStillEqual) )
    à remplacer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and ($isStillEqual) )
    Tu devrais reviser l'utilisation de my, ca te jouera pas mal de tours ! De plus, tu devrais utiliser les pragma "use strict; use warnings;", ca te permettra d'être plus rigoureux dans le code!

    _________

    Pour le aFileName non défini, j'avais fait une erreur dans le code que j'avais recopié, j'avais mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            if ($fichier =~ /$HIER.*/g) {
               my $aFileName = $fichiers;
            }
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            if ($fichier =~ /$HIER.*/g) {
               my $aFileName = $fichier;
            }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    J'avais essayé avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ((my $line_a=<FILEA>) and (my $line_b=<FILEB>) and ($isStillEqual) )
    mais ca marche pas non plus.

    Pour les pragmas je suis d'accord avec toi ca aide beaucoup. Je les mets tout le temps et ca m'aide a corriger les grosses boulettes que je fais mais là je suis un peu perdu (je ne suis qu'un jeune pada en apprentissage de la force )

  10. #10
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Essaie ainsi:
    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
    use strict; 
    use warnings;
     
    # VARIABLES 
    my $CONFXML = "Repertoire/XML";
    my $HIER    = '20070213';
    my $TODAY   = '20070214';
     
    # RECHERCHE DES FICHIERS 
    my ($aFileName, $bFileName, $filename);
    opendir(DIR , $CONFXML) || die "$CONFXML: $!";
    while (defined($filename = readdir(DIR))) {
    	chomp($filename);
     
    	$aFileName = "$CONFXML/$filename", if ($filename =~ /$HIER/);
    	$bFileName = "$CONFXML/$filename", if ($filename =~ /$TODAY/);
    }     
    closedir(DIR);
     
    # VERIFICATION DU RESULTAT DE LA RECHERCHE
    die("aFileName non défini\n"), unless($aFileName) ;
    die("bFileName non défini\n"), unless($bFileName) ;
    die("aFileName [$aFileName] n'existe pas\n"), unless(-e $aFileName) ;
    die("bFileName [$bFileName] n'existe pas\n"), unless(-e $bFileName) ;
     
    # COMPARAISON
    &compare ($aFileName, $bFileName);
     
     
    ############
    ### SUBS ###
    ############
     
    sub compare($$) {
    	my ($aFileName, $bFileName) = @_;  
    	open(my $inputa, '<', $aFileName) || die("impossible d'ouvrir $aFileName");
    	open(my $inputb, '<', $bFileName) || die("impossible d'ouvrir $bFileName");
     
    	my $isStillEqual = 1;
    	while ($isStillEqual) {
    		my $linea = <$inputa>;
    		my $lineb = <$inputb>;
    		$isStillEqual = ($linea) && ($lineb) && ($linea eq $lineb);     
    	}
     
    	close($inputa);
    	close($inputb);
    	print "isStillEqual : $isStillEqual\n";
    	return $isStillEqual;
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Merci pour ton aide MarneusCalgarXP.

    Ca ne marche pas mais y a du mieux. Il y a un truc que je comprend pas.
    Quand j'execute le script, j'ai comme retour :
    aFileName [XmlConf-20070213-1807] n'existe pas

    Comment peut-il dire qu'il ne trouve pas la variable correspondante a $aFileName alors que si je rajoute un print dans le code, j'ai bien le fichier trouvé affecté a la variable ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    # RECHERCHE DES FICHIERS
    my ($aFileName, $bFileName, $filename);
    opendir(DIR , $CONFXML) || die "$CONFXML: $!";
    while (defined($filename = readdir(DIR))) {
            chomp($filename);
     
            $aFileName = $filename, if ($filename =~ /$HIER/);
            print "$aFileName\n";
            $bFileName = $filename, if ($filename =~ /$TODAY/);
    }
    closedir(DIR);

    J'ai essayer de supprimer les conditions unless pour test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    die("aFileName non défini\n"), unless($aFileName) ;
    die("bFileName non défini\n"), unless($bFileName) ;
    die("aFileName [$aFileName] n'existe pas\n"), unless(-e $aFileName) ;
    die("bFileName [$bFileName] n'existe pas\n"), unless(-e $bFileName) ;
    et j'obtient
    impossible d'ouvrir XmlConf-20070213-1807 at ./test1.pl line 37.

  12. #12
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    As tu bien utilisé le code mis à jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $aFileName = "$CONFXML/$filename", if ($filename =~ /$HIER/);
    $bFileName = "$CONFXML/$filename", if ($filename =~ /$TODAY/);

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  13. #13
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Maniac
    Quand j'execute le script, j'ai comme retour :
    aFileName [XmlConf-20070213-1807] n'existe pas

    Comment peut-il dire qu'il ne trouve pas la variable correspondante a $aFileName alors que si je rajoute un print dans le code, j'ai bien le fichier trouvé affecté a la variable ?
    Ce n'est pas qu'il ne trouve pas la variable, c'est qu'il ne trouve pas le fichier correspondant au nom contenu dans la variable car il n'y a pas le chemin d'accès. (cf la remarque de MarneusCalgarXP)

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Effectivement en précisant le chemin d'accés c'est mieux. J'avais pas fait gaffe a la modif de MarneusCalgarXP.
    Le script s'execute maintenant correctement et sans erreur.

    Néanmoins la comparaison ne marche pas.
    J'ai créé 2 fichiers pour tester:

    Le premier contient :
    test
    5678


    Le deuxième contient :
    test
    1234


    Quand on execute le script ca retourne :
    isStillEqual :



    Si je refait le test avec 2 fichiers identique, j'obtient :
    Use of uninitialized value in concatenation (.) or string at ./test1.pl line 49.
    StillEqual :

  15. #15
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Et si tu remplaces le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $isStillEqual = ($linea) && ($lineb) && ($linea eq $lineb);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $isStillEqual = (defined($linea)) && (defined($lineb)) && ($linea) && ($lineb) && ($linea eq $lineb);

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    J'ai trouver une solution qui marche en remplacant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "isStillEqual : $isStillEqual\n";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print ( defined($isStillEqual) ? 1 : 0);
    Renvoi 0 si fichiers identique et 1 si fichiers pas identique

    Je vais quand même essayer ta solution pour voir.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    (Pour info) Ca marche pas avec la modif que tu propose MarneusCalgarXP.

  18. #18
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    ok, mais c'est étrange que undef soit affecté à isStillEqual... En tous cas tant mieux si ton code fonctionne !

    peux tu retester juste avec la modif suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		my $linea = <$inputa> || '';
    		my $lineb = <$inputb> || '';
    		$isStillEqual = ($linea) && ($lineb) && ($linea eq $lineb);

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Je viens de tester. Le script s'execute bien (pas d'erreur) mais la sorti reste isStillEqual : que le fichier soit identique ou non

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 7
    Points
    7
    Par défaut
    Allez pendant qu'on est chaud on continu sur la lancer. Suite du programme pour faire la différence.

    Dans les fichiers que je compare, j'aurais toujours des chaines (connus) qui seront différentes.
    Il faut donc que je ne tienne pas compte de ces chaines avant de faire la comparaison.
    J'ai pensé rajouté ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    next if ($linea =~ /tata.*|toto.*/);
    next if ($lineb =~ /tata.*|toto.*/);
    Le but est atteint mais j'ai des erreurs en sorti :
    Use of uninitialized value in pattern match (m//) at ./test1.pl line 44, <$inputb> line 5.
    Use of uninitialized value in pattern match (m//) at ./test1.pl line 45, <$inputb> line 5.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [CRON] Envoi de mail automatique
    Par a_me dans le forum Serveurs (Apache, IIS,...)
    Réponses: 10
    Dernier message: 20/10/2007, 12h17
  2. [DDE]envoi de mail automatique selon le résultat d'une requête
    Par celiaaa dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 10/04/2007, 19h10
  3. [VB6]envoie de mail automatiquement
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 28/04/2006, 14h14
  4. Réponses: 14
    Dernier message: 17/11/2005, 17h16
  5. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59

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