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 :

Message d'erreur incompris


Sujet :

Langage Perl

  1. #1
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut Message d'erreur incompris
    Bonjour à tous,

    Je suis plus que débutant et j'ai très peu de connaissances techniques...

    voici mes messages d'erreur :

    Global symbol "$test" requires explicit package name at C:\DOCUME~1\ANNEMA~1\Bureau\Perl\Base.pl line 8. Global symbol "$mot" requires explicit package name at C:\DOCUME~1\ANNEMA~1\Bureau\Perl\Base.pl line 18. Execution of C:\DOCUME~1\ANNEMA~1\Bureau\Perl\Base.pl aborted due to compilation errors.

    Quelqu'un pourrait il me guider vers la Force ?
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu n'as pas déclaré ces variables correctement, et tu utilises le pragma "strict" qui rend cette déclaration obligatoire (très bonne chose par ailleurs, surtout ne désactive pas "strict" pour te débarasser de cette erreur).

    Tu peux déclarer une variable avec my() ou our() selon que tu veux créer une variable lexicale (visible uniquement dans le bloc où elle est déclarée) ou globale (visible partout). Je te conseille très vivement de ne créer que des variables lexicales pour l'instant, tu n'auras probablement pas besoin des globales tout de suite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
    use strict; use warnings;
     
    my $var = 10;
     
    print $var + 10, "\n";
     
    __END__
    --
    Jedaï

  3. #3
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut message d'erreur
    Hello,

    Merci Jedaï, voici ce que j'essaye d'executer

    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
    #!/usr/local/bin/perl -w
     
    use strict; use warnings;
     
    open (FILE,"<$test.txt") or die"open: $!";
    my($line,@words,$word,%total);
    while( defined( $line = <FILE> ) )
    {
    #split coupe chaque phrase en mot
            @words = split( /\W+/, $line );
            foreach $word (@words)
     
         {
    #tr met chaque mot en majuscule
     
            $mot =~tr/A-Z/a-z/;
            $total{$word}++;
          }
    }
    close(FILE);
    foreach $word (sort keys %total)
    {
         print "$word a été rencontré $total{$word} fois.\n";
    }
    Je teste ce code que j'ai pris d'un cours... j'ai essayé de faire ce que tu m'a dis mais j'ai de nouveaux messages ! donc je t'envoie le code au cas ou tu puisses y trouver qq choses....

    Merci
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  4. #4
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut message d'erreur
    Ayé !!

    $mot a été traduit à la place de $word !! bizarre mais maintenant tout est affiché sans erreurs !!

    Merci
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par PadawanInPerl Voir le message
    $mot a été traduit à la place de $word !! bizarre mais maintenant tout est affiché sans erreurs !!
    Je ne vois pas en quoi c'est "bizarre" : si tu n'utilises pas le bon identifiant, Perl ne lit pas dans ton esprit l'identifiant que tu souhaitais employer...

    Par ailleurs ton tr/// mets le mot en minuscules, pas en majuscules, contrairement au commentaire. Cette opération est d'ailleurs déjà prise en charge directement par la fonction lc() :
    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
    #!/usr/local/bin/perl
    use strict; use warnings;
     
    my $test = "truc";
     
    open my($file), '<', "$test.txt"
      or die "open $test.txt: $!";
     
    my %total;
    while( my $line = <$file> ) {
     
      # découpe la ligne en mots
      my @words = split /\W+/, $line;
     
      for my $word (@words) {
        # incrémente le nombre d'occurence d'un mot (sans considérer la casse)
        $total{lc $word}++;
      }
    }
     
    close $file;
     
    for my $word (sort keys %total) {
         print "$word a été rencontré $total{$word} fois.\n";
    }
     
    __END__
    Si je le faisais pour moi-même :
    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
    #!/usr/bin/env perl
    use strict; use warnings; use 5.10.0;
     
    my $filename = shift;
    my %total;
     
    open my($file), '<', $filename
      or die "open $filename: $!\n";
    while( <$file> ) {
      $total{lc $_}++ for (split m/\W+/);
    }
    close $file;
     
    say "$_ a été rencontré $total{$_} fois." for (sort keys %total);
     
    __END__
    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. message d'erreur incompris
    Par Erlen dans le forum Débuter
    Réponses: 6
    Dernier message: 27/11/2018, 22h43
  2. message d'erreur incompris
    Par BYALI dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/07/2009, 13h44
  3. Message d'erreur incompris
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 12
    Dernier message: 19/09/2008, 16h12
  4. Message d'erreur incompris
    Par Lost in dans le forum Images
    Réponses: 13
    Dernier message: 13/07/2008, 16h57
  5. Message d'erreur incompris
    Par kibcha dans le forum C
    Réponses: 11
    Dernier message: 18/07/2007, 16h30

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