Journal En perl aussi on en apprend tous les jours....

Posté par  (site web personnel) .
Étiquettes : aucune
0
6
avr.
2003
Ca fait quelques années que j'ai commencé le perl (faut dire poru faire du web y avait que ca a l'époque), et depuis je me suis quand même pas mal amélioré....

Mais il y a de cela cinq minutes, en faisant des tests et en mettant des carp partout, je me suis rendu compte, notamment dans la fonction qui me posait problème, que :

my %hash1, %hash2;

était différent de

my (%hash1, %hash2);

Ok le use strict le détecte, mais je l'avais omis dans ce script...

Mais ma question est alors pourquoi

my %hash1, %hash2;

ne génère qu'un warning sur la non existence de %hash2, et pas de vraie erreur ?
  • # Re: En perl aussi on en apprend tous les jours....

    Posté par  (site web personnel) . Évalué à 0.

    Bon ca me rassure une inspection du code du projet en cours ne me donne aucune autre occurence de cette erreur, et c'est tant mieux, je me suis juste fait une frayeur passagère... ca doit être l'heure...

    désolé pour le dérangement
  • # Re: En perl aussi on en apprend tous les jours....

    Posté par  . Évalué à 4.

    Parce que tu n'es pas obligé, en Perl, de déclarer tes variables.
    Ce qui est fortement déconseillé sur des scripts conséquents. Par exemple, si dans ton script tu as une variable globale et une locale qui portent le même nom, si tu omets de déclarer la variable locale dans la fonction, c'est la globale qui sera utilisée...
    • [^] # Re: En perl aussi on en apprend tous les jours....

      Posté par  (site web personnel) . Évalué à 2.

      oui ca ok, d'ou le use strict

      mais dans

      my %hash1, %hash2;

      le "my %hash1" ok logique que ce soit correct, mais syntaxiquement, pourquoi le ",%hash2" l'est ?
      • [^] # Re: En perl aussi on en apprend tous les jours....

        Posté par  . Évalué à 2.

        Pas beaucoup d'idée si ce n'est que je ne vois pas, connaissant (un peu) Perl, pourquoi tu ne pourrais pas faire péter une variable dans une expression du type de my. C'est très permissif, donc je ne suis pas étonné.
        Mais c'est aussi pour ça que strict et warning sont quasi obligatoires.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.