Y a-t-il moyen d'utiliser une constante (définie avec use constant)
comme clé d'un hachage ? J'ai l'impression que Perl va toujours
transformer un "bareword" en chaîne dans ce contexte et que c'est donc
impossible. J'ai manqué quelque chose ?
Le script suivant montre que la clé est 'const' et non pas la valeur de
la constante associée.
use constant { 'const' => 'key' };
my $var = const;
my %hash = (const => 'value', 'key2' => 'value2');
$hash{const} = 'value3';
print "$_\n" for keys %hash;
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Manuel Pégourié-Gonnard
Manuel Pégourié-Gonnard scripsit :
Y a-t-il moyen d'utiliser une constante (définie avec use constant) comme clé d'un hachage ? J'ai l'impression que Perl va toujours transformer un "bareword" en chaîne dans ce contexte et que c'est donc impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' }; my $var = const; my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
-- Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Manuel Pégourié-Gonnard scripsit :
Y a-t-il moyen d'utiliser une constante (définie avec use constant)
comme clé d'un hachage ? J'ai l'impression que Perl va toujours
transformer un "bareword" en chaîne dans ce contexte et que c'est donc
impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma
question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' };
my $var = const;
my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Y a-t-il moyen d'utiliser une constante (définie avec use constant) comme clé d'un hachage ? J'ai l'impression que Perl va toujours transformer un "bareword" en chaîne dans ce contexte et que c'est donc impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' }; my $var = const; my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
-- Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Paul Gaborit
À (at) Thu, 5 Nov 2009 01:10:53 +0100 (CET), Manuel Pégourié-Gonnard écrivait (wrote):
Manuel Pégourié-Gonnard scripsit :
Y a-t-il moyen d'utiliser une constante (définie avec use constant) comme clé d'un hachage ? J'ai l'impression que Perl va toujours transformer un "bareword" en chaîne dans ce contexte et que c'est donc impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' }; my $var = const; my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
Heu... La technique du plus (+const) ne fonctionne malheureusement que dans le cas évoqué par la doc. À savoir, si on utilise une constante comme une clé d'accès dans une table de hachage... Dans le contexte de l'exemple que tu donnes ci-dessus, ça ne fonctionne pas : '+const' est utilisé exactement comme 'const'.
Il vaut donc mieux utiliser les parenthèses qui elles fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Thu, 5 Nov 2009 01:10:53 +0100 (CET),
Manuel Pégourié-Gonnard <mpg@elzevir.fr> écrivait (wrote):
Manuel Pégourié-Gonnard scripsit :
Y a-t-il moyen d'utiliser une constante (définie avec use constant)
comme clé d'un hachage ? J'ai l'impression que Perl va toujours
transformer un "bareword" en chaîne dans ce contexte et que c'est donc
impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma
question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' };
my $var = const;
my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
Heu... La technique du plus (+const) ne fonctionne malheureusement que
dans le cas évoqué par la doc. À savoir, si on utilise une constante
comme une clé d'accès dans une table de hachage... Dans le contexte de
l'exemple que tu donnes ci-dessus, ça ne fonctionne pas : '+const' est
utilisé exactement comme 'const'.
Il vaut donc mieux utiliser les parenthèses qui elles fonctionnent à
tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction
sans paramètre.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) Thu, 5 Nov 2009 01:10:53 +0100 (CET), Manuel Pégourié-Gonnard écrivait (wrote):
Manuel Pégourié-Gonnard scripsit :
Y a-t-il moyen d'utiliser une constante (définie avec use constant) comme clé d'un hachage ? J'ai l'impression que Perl va toujours transformer un "bareword" en chaîne dans ce contexte et que c'est donc impossible. J'ai manqué quelque chose ?
Ah oui, j'avais oublié de relire la doc de constant avant de poser ma question. C'est indiqué dans la section "caveat". Désolé pour le bruit.
use constant { 'const' => 'key' }; my $var = const; my %hash = (const => 'value', 'key2' => 'value2');
my %hash = (+const => 'value'); # interprète const comme une constante
Heu... La technique du plus (+const) ne fonctionne malheureusement que dans le cas évoqué par la doc. À savoir, si on utilise une constante comme une clé d'accès dans une table de hachage... Dans le contexte de l'exemple que tu donnes ci-dessus, ça ne fonctionne pas : '+const' est utilisé exactement comme 'const'.
Il vaut donc mieux utiliser les parenthèses qui elles fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Paul Gaborit
À (at) Thu, 05 Nov 2009 10:12:11 +0100, Paul Gaborit écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
Au fait, j'oubliais : il faut respecter les conventions d'écriture. Une constante, par convention, porte toujours, sauf très rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3; %h = (CONST() => 3);
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) Thu, 05 Nov 2009 10:12:11 +0100,
Paul Gaborit <Paul.Gaborit@invalid.invalid> écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à
tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction
sans paramètre.
Au fait, j'oubliais : il faut respecter les conventions
d'écriture. Une constante, par convention, porte toujours, sauf très
rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3;
%h = (CONST() => 3);
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) Thu, 05 Nov 2009 10:12:11 +0100, Paul Gaborit écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
Au fait, j'oubliais : il faut respecter les conventions d'écriture. Une constante, par convention, porte toujours, sauf très rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3; %h = (CONST() => 3);
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Manuel Pégourié-Gonnard
Paul Gaborit scripsit :
À (at) Thu, 05 Nov 2009 10:12:11 +0100, Paul Gaborit écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
Ok, merci.
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
Ah, je comprends mieux alors.
Au fait, j'oubliais : il faut respecter les conventions d'écriture. Une constante, par convention, porte toujours, sauf très rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3; %h = (CONST() => 3);
Ok.
-- Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Paul Gaborit scripsit :
À (at) Thu, 05 Nov 2009 10:12:11 +0100,
Paul Gaborit <Paul.Gaborit@invalid.invalid> écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à
tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
Ok, merci.
En fait, en Perl, actuellement, une constante n'est qu'une fonction
sans paramètre.
Ah, je comprends mieux alors.
Au fait, j'oubliais : il faut respecter les conventions
d'écriture. Une constante, par convention, porte toujours, sauf très
rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3;
%h = (CONST() => 3);
Ok.
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
À (at) Thu, 05 Nov 2009 10:12:11 +0100, Paul Gaborit écrivait (wrote):
Il vaut donc mieux utiliser les parenthèses qui, elles, fonctionnent à tous les coups :
my %hash = (const() => 'value'); # interprète const comme une constante
Ok, merci.
En fait, en Perl, actuellement, une constante n'est qu'une fonction sans paramètre.
Ah, je comprends mieux alors.
Au fait, j'oubliais : il faut respecter les conventions d'écriture. Une constante, par convention, porte toujours, sauf très rares exceptions, un nom entièrement en MAJUSCULES ! Donc :
use constant CONST => 'essai';
$h{CONST()} = 3; %h = (CONST() => 3);
Ok.
-- Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/