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
espie
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
In article <45221f3f$0$368$426a74cc@news.free.fr>,
kurtz_le_pirate <kurtzlepirate@yahoo.fr> wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça :
my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit
Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés
non définies ?
... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a
ce nom dans le hash, meme si sa valeur est non definie) et `defined'
(il y a un element a ce nom dans le hash de valeur definie), et a
utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction
auxiliaire peut aider, par exemple:
my $f = sub {
return $EventTypes{shift} or "default value";
};
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
Paul Gaborit
À (at) Tue, 3 Oct 2006 08:43:33 +0000 (UTC), (Marc Espie) écrivait (wrote):
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
Ça me semble aussi la meilleure solution pour un besoin ponctuel.
Si le besoin est récurrent (pour de nombreuses tables ou dans un module), on peut aussi passer par 'tie' pour changer directement le comportement de la table de hachage (cf. perltie).
Il existe un module sur CPAN qui s'appelle Tie::HashDefaults. Il ne fait pas exactement ce que vous souhaitez mais il ne serait pas très difficile d'y ajouter votre fonctionnalité. Et l'auteur du module pourrait même l'intégrer dans une nouvelle version.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 3 Oct 2006 08:43:33 +0000 (UTC),
espie@lain.home (Marc Espie) écrivait (wrote):
In article <45221f3f$0$368$426a74cc@news.free.fr>,
kurtz_le_pirate <kurtzlepirate@yahoo.fr> wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça :
my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit
Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés
non définies ?
... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a
ce nom dans le hash, meme si sa valeur est non definie) et `defined'
(il y a un element a ce nom dans le hash de valeur definie), et a
utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction
auxiliaire peut aider, par exemple:
my $f = sub {
return $EventTypes{shift} or "default value";
};
s/(...)/&$f($1)/eg;
Ça me semble aussi la meilleure solution pour un besoin ponctuel.
Si le besoin est récurrent (pour de nombreuses tables ou dans un
module), on peut aussi passer par 'tie' pour changer directement le
comportement de la table de hachage (cf. perltie).
Il existe un module sur CPAN qui s'appelle Tie::HashDefaults. Il ne
fait pas exactement ce que vous souhaitez mais il ne serait pas très
difficile d'y ajouter votre fonctionnalité. Et l'auteur du module
pourrait même l'intégrer dans une nouvelle version.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 3 Oct 2006 08:43:33 +0000 (UTC), (Marc Espie) écrivait (wrote):
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
Ça me semble aussi la meilleure solution pour un besoin ponctuel.
Si le besoin est récurrent (pour de nombreuses tables ou dans un module), on peut aussi passer par 'tie' pour changer directement le comportement de la table de hachage (cf. perltie).
Il existe un module sur CPAN qui s'appelle Tie::HashDefaults. Il ne fait pas exactement ce que vous souhaitez mais il ne serait pas très difficile d'y ajouter votre fonctionnalité. Et l'auteur du module pourrait même l'intégrer dans une nouvelle version.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Klaus
Marc Espie wrote:
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Je propose de lier ce bout de code à un hash avec la méthode "tie": http://perl.enstimac.fr/DocFr/perltie.html
Marc Espie wrote:
In article <45221f3f$0$368$426a74cc@news.free.fr>,
kurtz_le_pirate <kurtzlepirate@yahoo.fr> wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça :
my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit
Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés
non définies ?
... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Je propose de lier ce bout de code à un hash avec la méthode "tie":
http://perl.enstimac.fr/DocFr/perltie.html
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Je propose de lier ce bout de code à un hash avec la méthode "tie": http://perl.enstimac.fr/DocFr/perltie.html
kurtz_le_pirate
"Marc Espie" a écrit dans le message de news: eft7rl$2k7u$
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
merci de ta réponse qui m'a fait avancer. j'ai un peu aménager tout ça pour arriver à : ... my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure'); ... # --- test loop for ($index=0;$index<50;$index++) { $alea=int(1+rand(18)); $val = getHashValue($alea); print "$alea -> $valn"; } ... sub getHashValue { my $thisKey=shift; return (defined $EventTypes{$thisKey})?$EventTypes{$thisKey}:"inconnue"; }
merci :))
"Marc Espie" <espie@lain.home> a écrit dans le message de news:
eft7rl$2k7u$1@biggoron.nerim.net...
In article <45221f3f$0$368$426a74cc@news.free.fr>,
kurtz_le_pirate <kurtzlepirate@yahoo.fr> wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça :
my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit
Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés
non définies ?
... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a
ce nom dans le hash, meme si sa valeur est non definie) et `defined'
(il y a un element a ce nom dans le hash de valeur definie), et a
utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une
fonction
auxiliaire peut aider, par exemple:
my $f = sub {
return $EventTypes{shift} or "default value";
};
s/(...)/&$f($1)/eg;
merci de ta réponse qui m'a fait avancer. j'ai un peu aménager tout ça
pour arriver à :
...
my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit
Success',16,'Audit Failure');
...
# --- test loop
for ($index=0;$index<50;$index++) {
$alea=int(1+rand(18));
$val = getHashValue($alea);
print "$alea -> $valn";
}
...
sub getHashValue {
my $thisKey=shift;
return (defined
$EventTypes{$thisKey})?$EventTypes{$thisKey}:"inconnue";
}
"Marc Espie" a écrit dans le message de news: eft7rl$2k7u$
In article <45221f3f$0$368$, kurtz_le_pirate wrote:
bonjour,
si, par exemple, j'ai un hash défini comme ça : my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure');
existe-t-il un moyen de "definir" un valeur "autre" pour toutes clés non définies ? ... otherwise,'inconnu'
votre avis ?
Non, il faut un bout de code pour ca.
Attention a faire la distinction entre `exists' (il y a un element a ce nom dans le hash, meme si sa valeur est non definie) et `defined' (il y a un element a ce nom dans le hash de valeur definie), et a utiliser `delete' en consequence.
S'il s'agit d'utiliser une substitution dans une regexp, une fonction auxiliaire peut aider, par exemple:
my $f = sub { return $EventTypes{shift} or "default value"; };
s/(...)/&$f($1)/eg;
merci de ta réponse qui m'a fait avancer. j'ai un peu aménager tout ça pour arriver à : ... my %EventTypes = (1,'Error',2,'Warning',4,'Information',8,'Audit Success',16,'Audit Failure'); ... # --- test loop for ($index=0;$index<50;$index++) { $alea=int(1+rand(18)); $val = getHashValue($alea); print "$alea -> $valn"; } ... sub getHashValue { my $thisKey=shift; return (defined $EventTypes{$thisKey})?$EventTypes{$thisKey}:"inconnue"; }