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 :

Utilisation de use strict et use warnings


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Utilisation de use strict et use warnings
    Bonjour a tous,

    J'ai une petite question sur les messages donne lorsque l'on utilise use sctrict et use warnings.
    Voici mon 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
    #!/global/local/2003.01/bin/perl
    use strict; use warnings;
     
    my %coverage;
    my $nbr_input = $#ARGV -1;
    for ($idx=0;$idx<=$nbr_input;$idx++) {
        open my $input, '<', $ARGV[$idx]
            or die "Impossible d'ouvrir $ARGV[$idx] en lecture : $!\n";
        cover( $input, \%coverage, $idx );
        close $input;
    }
     
    open(output,">$ARGV[$#ARGV]");
    @liste=sort(keys(%coverage));
     
    for ($i=0;$i<@liste;$i++) {
     if ($coverage{$liste[$i]}{0} eq "") {$coverage{$liste[$i]}{0} = "----"}
     if ($coverage{$liste[$i]}{1} eq "") {$coverage{$liste[$i]}{1} = "----"}
     if ($coverage{$liste[$i]}{2} eq "") {$coverage{$liste[$i]}{2} = "----"}
     if ($coverage{$liste[$i]}{nbr} eq "3") {print output "$liste[$i] : $coverage{$liste[$i]}{0} $coverage{$liste[$i]}{1} $coverage{$liste[$i]}{2}\n";}
    }
    for ($i=0;$i<@liste;$i++) {
     if ($coverage{$liste[$i]}{nbr} eq "2") {print output "$liste[$i] : $coverage{$liste[$i]}{0} $coverage{$liste[$i]}{1} $coverage{$liste[$i]}{2}\n";}
    }
    for ($i=0;$i<@liste;$i++) {
     if ($coverage{$liste[$i]}{nbr} eq "1") {print output "$liste[$i] : $coverage{$liste[$i]}{0} $coverage{$liste[$i]}{1} $coverage{$liste[$i]}{2}\n";}
    }
    Voici les erreurs que j'obtiens :
    Unquoted string "output" may clash with future reserved word at ./get_coverage.pl line 13.
    Unquoted string "output" may clash with future reserved word at ./get_coverage.pl line 20.
    Unquoted string "output" may clash with future reserved word at ./get_coverage.pl line 23.
    Unquoted string "output" may clash with future reserved word at ./get_coverage.pl line 26.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 6.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 6.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 6.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 7.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 8.
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 9.
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 14.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 16.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 16.
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 16.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 16.
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 17.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 17.
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 17.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 17.
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 18.

    Evidement si je n'utilises pas les packages strict et warning ca passe.
    Comment ecrire mon code pour que ca marche en utilisant les package...
    Desole pour cette question certainement triviale, mais je dois ecrire un script perl tous les deux ans....

    Merci,
    Jm

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par jmricatt
    Voici les erreurs que j'obtiens :
    Unquoted string "output" may clash with future reserved word at ./get_coverage.pl line 13.
    Nommer le handle de fichier output n'est peut être pas une bonne idée car ce mot était réservé pour un possible usage ultérieur ...

    Citation Envoyé par jmricatt
    Global symbol "$idx" requires explicit package name at ./get_coverage.pl line 6.
    "use strict;" impose une déclaration des variables, préalablement à leur usage. Il suffit donc de mettre un "my $idx" quelquepart, à la ligne 6 ou avant (selon la portée souhaitée).

    Citation Envoyé par jmricatt
    Global symbol "@liste" requires explicit package name at ./get_coverage.pl line 14.
    Global symbol "$i" requires explicit package name at ./get_coverage.pl line 16.
    Pareil !

    Citation Envoyé par jmricatt
    Evidement si je n'utilises pas les packages strict et warning ca passe.
    Normal, aucune déclaration n'est exigée dans ce cas ... mais tu es alors à la merci de la moindre faute de frappe ou de casse dans les noms de variables.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

Discussions similaires

  1. impossible de comparer une chaine avec use strict
    Par erc_fun dans le forum Langage
    Réponses: 6
    Dernier message: 05/10/2006, 11h56
  2. "use strict" et "require"
    Par minusette dans le forum Langage
    Réponses: 4
    Dernier message: 26/07/2006, 18h03
  3. [USE STRICT] uninitialized value in print ...
    Par pop_up dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2006, 15h18
  4. Variable avant et après "use strict;"...
    Par kepon85 dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 15h42
  5. [langage] pb avec use strict ;
    Par la bille dans le forum Langage
    Réponses: 5
    Dernier message: 22/12/2003, 17h44

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