• [^] # Re: Precision

    Posté par . En réponse au message Lignes avec mots identiques. Évalué à 3.

    Ok, ça s'éclaircit.

    Il faut lire ton fichier en deux passes, car autrement tu serais obligé de retenir en mémoire chaque ligne au cas où un de ses mots serait dupliqué. Par contre, tu n'es pas obligé de le réouvrir à chaque tour de boucle :

    Je considère que :
    - Les mots dont tu surveilles la duplication sont récupérés dans un champ avec substr($_, 6, 8). Voir plutôt du côté de split.
    - Tu souhaites voir si chacun de ces mots se trouve dans l'intégralité des chaînes, dont les mots sont séparés par des espaces.


    $in = "in.txt";
    $out = "out.txt";

    open(INFILE,$in);
    while (<INFILE>) { $mots{substr($_, 6, 8)}++; }
    close (INFILE);

    open(INFILE,$in);
    open(OUTFILE,">>$out");

    while (<INFILE>)
    {
    $phrase = $_;

    foreach (split(' ',$phrase))
    {
    if ($mots{$_} ge 2) { print $phrase; last }
    }
    }

    close(INFILE);
    close(OUTFILE);