j'ai une variable qui a la forme suivante :
$var = "X;Y;Z;Y;R;D;F;"
Bref, des valeurs séparées par un séparateur. Une même valeur peut s'y
retrouver plusieurs fois.
La variable peut être longue (plusieurs milliers de valeurs)
Je veux la transformer pour avoir :
$hash{X} = 1
$hash{Y} = 2
$hash{Z} = 1
Bref, un hachage ou chaque valeur est en clef et le nombre de fois en
valeur.
Spontanément je ferais :
my @arr = split /;/,$var;
my %hash;
foreach (@arr) {
$hash{$_}++;
}
Est-ce le moyen le plus performant ?
Question corollaire :
si je veux enlever 1 occurence d'une valeur, quelle est la méthode la plus
rapide :
$enlever = 'Y';
$var =~ s/$enlever;//;
?
Bon, il semblerait que je recommence à accéder à ce groupe normalement, même si on s'en fout un peu pour moi c'est une bonne nouvelle.
$var = "X;Y;Z;Y;R;D;F;"
N'y a-t-il qu'un caractère à chaque fois?
Quel type d'optimisation est souhaité (utilisation du proc, de la mémoire, simplicité/maintenabilité du code, autre)?
-- Denis
paul POULAIN
Denis -esp2008- wrote:
Bonjour, Bon, il semblerait que je recommence à accéder à ce groupe normalement, même si on s'en fout un peu pour moi c'est une bonne nouvelle.
$var = "X;Y;Z;Y;R;D;F;" N'y a-t-il qu'un caractère à chaque fois?
Non, c'est même plutôt un nombre qu'un caractère. Mais ca n'est pas obligé.
C'est juste une chaine courte (disons <10 caractères)
Quel type d'optimisation est souhaité (utilisation du proc, de la mémoire, simplicité/maintenabilité du code, autre)? Utilisation du proc, c'est un traitement qui sera fait des milliers de fois,
donc c'est ca qui est critique. -- Paul
Denis -esp2008- wrote:
Bonjour,
Bon, il semblerait que je recommence à accéder à ce groupe normalement,
même si on s'en fout un peu pour moi c'est une bonne nouvelle.
$var = "X;Y;Z;Y;R;D;F;"
N'y a-t-il qu'un caractère à chaque fois?
Non, c'est même plutôt un nombre qu'un caractère. Mais ca n'est pas obligé.
C'est juste une chaine courte (disons <10 caractères)
Quel type d'optimisation est souhaité (utilisation du proc, de la
mémoire, simplicité/maintenabilité du code, autre)?
Utilisation du proc, c'est un traitement qui sera fait des milliers de fois,
Bonjour, Bon, il semblerait que je recommence à accéder à ce groupe normalement, même si on s'en fout un peu pour moi c'est une bonne nouvelle.
$var = "X;Y;Z;Y;R;D;F;" N'y a-t-il qu'un caractère à chaque fois?
Non, c'est même plutôt un nombre qu'un caractère. Mais ca n'est pas obligé.
C'est juste une chaine courte (disons <10 caractères)
Quel type d'optimisation est souhaité (utilisation du proc, de la mémoire, simplicité/maintenabilité du code, autre)? Utilisation du proc, c'est un traitement qui sera fait des milliers de fois,