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

Contribuez Perl Discussion :

[FAQ] Questions sur le débogage sous Perl


Sujet :

Contribuez Perl

  1. #1
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut [FAQ] Questions sur le débogage sous Perl
    Nouvelle question de la FAQ sur le débogage en Perl: A quoi sert le pragma "use strict;" ?
    ____________

    Le pragma use strict; interdit certaines constructions syntaxiques jugées dangereuses: le compilateur échoue lorsqu'il rencontre ce genre de constructions (le programme ne peut même pas être lancé).

    Il est presque toujours utile d'interdire ces constructions dangereuses, si bien qu'il est fortement recommandé de toujours mettre ce pragma en tête de tous vos programmes (sauf éventuellement pour les scripts unilignes).

    Il y a trois types de constructions rendues interdites par l'utilisation du pragma use strict;: celles relatives aux variables ('vars'), aux fonctions ('subs') et aux références ('refs'). Il est possible d'interdire ces types constructions de façon individuelle et d'en autoriser d'autres. Par exemple si l'on désire interdire seulement les constructions relatives aux fonctions, on utilisera le pragma use strict 'subs';. Lorsque l'on utilise seulement use strict;, on interdit les trois types de constructions sans distinction. Donc:

    est équivalent à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    use strict "vars";
    use strict "refs";
    use strict "subs";
    Dans la très grande majorité des cas, on utilisera simplement use strict;, parce que l'on désire généralement interdire les trois types de constructions. A condition d'avoir une très bonne raison de le faire (et de très bien savoir ce que l'on fait), il est possible de désactiver temporairement l'une de ces interdictions, en utilisant par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    use strict; # en début de programme
    # ... du code Perl
    no strict "refs";
    # une ou deux lignes de code utilisant des références symboliques
    use strict "refs";
    Désactiver ainsi l'une des interdictions permet dans certains cas de faire des constructions "magiques", mais ce n'est pas recommandé en-dehors de cas exceptionnels, et il y a presque toujours moyen de faire autrement.

    • strict "vars" : interdit les variables qui n'ont pas été déclarées (avec les fonctions my, our ou state) avant d'être utilisées):

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      use strict "vars";
       
      my $toto = 5;       # OK, à cause de my
      our $titi = "titi"; # OK à cause de our
      $tutu = "tutu";     # ne marche pas parce que $tutu n'a pas été déclaré
      $MonPackage::i = 1  # OK, parce que le nom de la variable est donné en entier
                          # avec le paquetage auquel elle appartient
      my @tableau = 1..10;
      my $compte_elements = scalar @tableau; # compte les éléments de @tableau
      print "$compte_element \n"; # erreur de compilation: erreur sur le nom de la variable
      Comme on le voit sur le dernier exemple, use strict 'vars'; permet notamment de détecter d'éventuelles erreurs (assez fréquentes) sur le nom des variables:

      Les variables spéciales $a et $b utilisées par la fonction sort sont exemptées de cette obligation de déclaration préalable.


    • strict "refs" : interdit l'utilisation (volontaire ou non) des références symboliques (qui étaient utiles en Perl 4, mais n'ont plus de raison d'être employées avec les références "dures" et les structures de données complexes de Perl 5):

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      use strict "refs";
      my $toto = 10;
      $ref = \$toto;
      print $$ref;	# ok, imprime le contenu de $toto, donc 10
      our $titi = 20;
      $ref = "titi";
      print $$ref;	# erreur à l'exécution car c'est une référence symbolique.
                      # Imprimerait le contenu de $titi, donc 20, sans le strict vars

    • strict "subs" : interdit l'utilisation de mots nus (barewords) pour les identifiants autres que les identifiants des fonctions (les mots nus restent toutefois autorisés pour les clefs des hachages s'ils sont encadrés par des { et }, ou à gauche de la "virgule grasse" =>) :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      use strict "subs";
      my %mois = (un => "janvier", deux = "février"); # OK
      $mois{trois} = mars;    # erreur: mars est un mot nu
      $mois{quatre} = "avril";  # OK, en raison des guillemets autour d'avril

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    J'ai rajouté !


  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ai ajouté trois questions à la FAQ sur le débogage en Perl.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Par cnotre, pense à mettre des balises code perl pour la coloration.
    [code=perl]

    Tu as aussi une question vide.

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Bonjour Djibril,

    la question vide, c'est juste une fausse manip. Tu peux la virer (j'ai essayé de le faire, mais n'ai pas les droits).

    Je note pour les balises, j'ignorais. J'ai modifié. Sinon, n'hésite pas à modifier s'il en reste.

  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Encore une nouvelle question de la FAQ sur le débogage en Perl.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Très bien.

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    J'ai ajouté une nouvelle question dans la FAQ sur le débogage en Perl.

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/07/2014, 21h21
  2. Retour d'expérience sur le multithreading sous perl
    Par jp_rennes dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 31/05/2012, 10h32
  3. [quota] deux trois questions sur les quota sous Redhat
    Par pierrot10 dans le forum Administration système
    Réponses: 3
    Dernier message: 25/03/2009, 12h38
  4. Question sur des requêtes sous Crystal X
    Par Banzai31 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 23/10/2008, 12h35
  5. Quelques questions sur des écritures en perl
    Par Premium dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2006, 00h44

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