Perl

Bonjour,

je suis débutante en perl et je dois créer un fichier texte puis indexé son contenu en récupérant que les mots significatif et leurs nombre d'apparition puis construire le fichier inverse depuis le fichier d'index svp qlq pour m aidé

4 réponses

Résumé de la discussion

Objectif : indexer le contenu d'un fichier texte et extraire les mots significatifs et leurs occurrences afin de générer un fichier inverse utilisable par un programme. Des réponses montrent des démarches pour ouvrir et lire le fichier, mais des erreurs surviennent souvent à cause du chemin d'accès sous Windows et de la syntaxe Perl. D'autres échanges présentent des exemples de code utilisant open et $ pour compter les lignes, tout en soulignant l'importance des chemins absolus ou corrects et des permissions. En pratique, il peut être utile d'utiliser des chemins absolus ou d'ajuster le script pour traiter les espaces et les caractères spéciaux, et d'envisager File::Spec pour la portabilité.

Bobot (l’IA à votre service)
  1. bonjour, svp j'ai créer un fichier.txt ds le dossier ou se trouve mes programme et je veux savoir est ce q je peux y accéder a son contenu a partir d'un programme??
    j'ai essayé de tester le code suivant:
    #!/usr/bin/perl
    use strict;use warnings;

    my @tmp;
    open LIRE, 'fiche.txt'
    or die "Impossible Ouverture Fichier : $!\n";

    while(<LIRE>){
    push @tmp,$_ if /^tata;ta/; # en supposant que tu as plusieurs lignes
    }

    print "$_\n" foreach @tmp;

    j'attend votre réponse avec impatience!
    0
    1. Modérateur
      Salut,

      Pour répondre à ta première question, oui on peut accéder à un fichier.txt depuis un programme.

      Ce qui est important c'est de savoir le contenu de ton fichier et aussi ce que tu veux obtenir comme résultat.

      Exemple.

      Supposons que j'ai le fichier suivant (le nom de fichier est plop)
      explicaiont est un membre CCM
      lami20j aussi est un membre CCM


      Le résultat voulu étant de mettre la lettre de début de chaque mot en majuscules et écrire le résultat dans le fichier plop_resultat

      :~$ cat plop
      explicaiont est un membre CCM
      lami20j aussi est un membre CCM
      :~$ cat plop.pl 
      #!/usr/bin/perl
      use strict;use warnings;
      
      open LIRE,   "plop"            or die "E/S : $!\n";
      open ECRIRE, "> plop_resultat" or die "E/S : $!\n";
      
      while(<LIRE>){
        s/\b(.)/\u$1/g;
        print ECRIRE;
      }
      __END__
      
      :~$ cat plop_resultat
      cat: plop_resultat: Aucun fichier ou dossier de ce type
      :~$ perl plop.pl 
      :~$ cat plop_resultat
      Explicaiont Est Un Membre CCM
      Lami20j Aussi Est Un Membre CCM
      :~$ 


      J'attends des infos pour pouvoir t'aider.
      0
      1. slt non ça marche pas! moi j'ai creer un fiche.txt comme on crée les bloc note btn droit --nouveau... et puis je veux afficher son contenu a l'exécution parcq aprés je dois pouvoir récupérer juste les mots significatif et je pense que c'est ce qu'il faut faire comme début
        le probléme c'est que j'essaie d'apprendre en méme temp la syntaxe de perl
        merci
        0
        1. Modérateur
          J'ai vu que tu es sous windows.
          Alors lance l'utilitaire de recherche et cherche ton fichier pour trouver le bon chemin.

          Affiche ici le chemin.
          0
        2. C:\Users\Microbox\Desktop\index\fiche.txt
          voila donc comment pui-je accéder a lui par le programme?
          0
        3. pour l'instant je saisi que des phrase ds mon fichier aprés j utilisrai des symbole
          0
        4. Modérateur
          Ouvre la ligne de commande DOS et tape
           perl -e 'print $^V'


          Affiche ici le résultat
          0
        5. can't find string termination " ' "anyware before EOF at -e line1
          0
      2. #!/usr/bin/perl
        use strict;use warnings;

        open LIRE, 'C:\Users\Microbox\Desktop\index\fiche.txt'
        or die "Impossible Ouverture Fichier : $!\n";

        while(<LIRE>){
        $n = $.;
        }
        print "Le fichier à $n lignes\n";
        voila il m'affiche le code
        0
        1. Modérateur
          voila il m'affiche le code
          C'est normal, c'est le but de la commande type

          Ok, c'est ma faute ;-)

          Le message d'erreur dit que $n n'est pas déclaré avec my, et dans ton cas c'est variable dont la portée ne dépasse pas le bloc while

          Pour corriger ça il suffit de la déclarer ensuite exécuter le script.
          #!/usr/bin/perl
          use strict;use warnings;
          
          my $n;
          
          open LIRE, 'C:\Users\Microbox\Desktop\index\fiche.txt'
          or die "Impossible Ouverture Fichier : $!\n";
          
          while(<LIRE>){
          $n = $.;
          }
          print "Le fichier à $n lignes\n"; 
          0
        2. oui j'ai fais perl test.pl mais il affiche un ensemble d'erreur elles sont dans la capture
          0
        3. il dis impossible d'ouverture fichier???
          0
        4. #!/usr/bin/perl
          use strict;use warnings;

          my $n;

          open LIRE, 'C:\Users\Microbox\Desktop\index\fichier.txt'
          or die "Impossible Ouverture Fichier : $!\n";

          while(<LIRE>){
          $n = $.;
          }
          print "Le fichier à $n lignes\n";
          j ai renomer en fichier.txt sachant qu'il est dans le répértoire du script mais il l'ouvre pas!
          0
        5. Modérateur
          Je ne suis pas devant ton pc donc je ne peux pas savoir ce que tu vois à l'écran.
          Il me semble que tu peux copier depuis la console DOS.
          Donc affiche ici ce que tu vois dans la console après avoir taper
          perl test.pl
          0