Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perte de valeur dans un tableau de hashage

7 réponses
Avatar
Gérard Breiner
Bonjour

J'ai un problème de perte de valeurs dans un tableau de hashage.
Afin d'essayer de comprendre le phénomène, j'ai écris un le bout de code
suivant :

$ch = "chaine";
%hash = ( a => "1",
b => "2",
c => "3",
d => "4",
e => "5"
);
foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1};
print "$dir1 => $dir2\n";
}

Une idée ?
Merci d'avance.

Gérard Breiner

7 réponses

Avatar
Paul Gaborit
À (at) Thu, 8 Sep 2005 17:13:01 +0200,
"Gérard Breiner" écrivait (wrote):
J'ai un problème de perte de valeurs dans un tableau de hashage.
Afin d'essayer de comprendre le phénomène, j'ai écris un le bout de code
suivant :

$ch = "chaine";
%hash = ( a => "1",
b => "2",
c => "3",
d => "4",
e => "5"
);
foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1};
print "$dir1 => $dir2n";
}

Une idée ?


Oui : utilisez donc 'use warnings;' au début de votre script.

Quel résultat attendiez-vous de votre script ?

Si vous ajoutez les lignes suivantes en fin de script :

foreach my $key (keys %hash) {
print "$key => $hash{$key}n";
}

...on constate que rien n'a disparu.
Où constatez-vous une perte de valeurs ?

PS: méfiez-vous des lettres seules utilisée comme clé devant
l'opérateur =>. Avec 'm' ou 'y', on a des surprises ;-)

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
JacK
Le 08/09/2005 17:13, :
Bonjour

J'ai un problème de perte de valeurs dans un tableau de hashage.
Afin d'essayer de comprendre le phénomène, j'ai écris un le bout de code
suivant :

$ch = "chaine";
%hash = ( a => "1",
b => "2",
c => "3",
d => "4",
e => "5"
);
foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1};
print "$dir1 => $dir2n";
}

Une idée ?
Merci d'avance.

Gérard Breiner




foreach $cle (keys %hash) {
$dir1 = $cle."/$ch/";

Avatar
Jacques Caron
Salut,

On Thu, 8 Sep 2005 17:13:01 +0200, Gérard Breiner
wrote:

foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1};
print "$dir1 => $dir2n";
}

Une idée ?


$dir2 = $hash{$_};

Là vous cherchez une clef ($_."/$ch/") qui n'existe pas, donc forcément...

Jacques.

Avatar
Gérard Breiner
Bonjour,

Merci pour vos réponses et effectivement la valeur n'existe pas.

Je faisais:

foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1}; # la valeur n'existe pas (comment ne l'ai-je pas vu
! )
print "$dir1 => $dir2n";
}

Ce qu'il faut faire, c'est :

foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$_}."$ch"; # Beaucoup mieux
print "$dir1 => $dir2n";
}

Encore merci

Gérard Breiner


"Gérard Breiner" a écrit dans le message de
news: dfpkdv$ov0$
Bonjour

J'ai un problème de perte de valeurs dans un tableau de hashage.
Afin d'essayer de comprendre le phénomène, j'ai écris un le bout de code
suivant :

$ch = "chaine";
%hash = ( a => "1",
b => "2",
c => "3",
d => "4",
e => "5"
);
foreach (keys %hash) {
$dir1 = $_."/$ch/";
$dir2 = $hash{$dir1};
print "$dir1 => $dir2n";
}

Une idée ?
Merci d'avance.

Gérard Breiner



Avatar
Paul Gaborit
À (at) Fri, 9 Sep 2005 10:50:42 +0200,
"Gérard Breiner" écrivait (wrote):
[...]
$dir1 = $_."/$ch/";
$dir2 = $hash{$_}."$ch"; # Beaucoup mieux


Ces deux lignes seraient plus claires comme cela :

$dir1 = "$_/$ch/";
$dir2 = "$hash{$_}$ch";

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Gérard Breiner
C'est sans conteste plus clair.
Merci ...

Gérard

Ces deux lignes seraient plus claires comme cela :

$dir1 = "$_/$ch/";
$dir2 = "$hash{$_}$ch";

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
nospam
Paul Gaborit wrote:

$dir1 = $_."/$ch/";
$dir2 = $hash{$_}."$ch"; # Beaucoup mieux


Ces deux lignes seraient plus claires comme cela :
$dir1 = "$_/$ch/";
$dir2 = "$hash{$_}$ch";


Perso je trouve l'inverse plus clair, mais bon les goûts et les
couleurs ... ;-)

--
Romuald Brunet, ICQ 33033393

Remplacez nospam par mon prénom pour me contacter par email