<div dir="auto"><div>Salut,</div><div dir="auto"><br></div><div dir="auto">Dans l&#39;appel récursif, tu déréférences la hash créé a la volée, càd que %hoh n&#39;est pas défini et au final tu passes une hash et non une référence de hash ce qui va chambouler tes arguments.</div><div dir="auto">Tu devrais utiliser &quot;use strict; use warnings;&quot; pour y voir plus clair.<br><br><div class="gmail_quote" dir="auto"><div dir="ltr">Le jeu. 1 nov. 2018 03:17, Patrick Dupre &lt;<a href="mailto:pdupre@gmx.com">pdupre@gmx.com</a>&gt; a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">OK,<br>
<br>
Je vais regarder.<br>
Mais, il y a quelque chose que je ne comprends pas dans ce que j&#39;ai ecris.<br>
Pourqoui $nb n&#39;ai pas passe dans l&#39;appel ?<br>
<br>
#!/usr/bin/perl<br>
<br>
sub multi {<br>
  my ($hoh, $nb) = @_ ;<br>
print &quot;nb: $$nb\n&quot; ;<br>
  if (ref ($hoh) eq &quot;HASH&quot;) {<br>
$$nb++ ;<br>
    foreach my $i (keys %{$hoh}) {<br>
print &quot;i: $i, $$nb\n&quot; ;<br>
      multi (%{$hoh {$i}}, $nb) ;<br>
      }<br>
print &quot;HAH\n&quot; ;<br>
    }<br>
  else {<br>
    return ;<br>
    }<br>
  }<br>
<br>
my %hash0 ;<br>
<br>
my %hash1 ;<br>
$hash1 {A} = 1 ;<br>
$hash1 {B} = 2 ;<br>
<br>
my %hash2 ;<br>
$hash2 {A} {a} = 1 ;<br>
$hash2 {A} {b} = 2 ;<br>
$hash2 {B} {a} = 3 ;<br>
$hash2 {B} {b} = 4 ;<br>
<br>
my $nb = 0 ;<br>
<br>
multi (\%hash0, \$nb) ;<br>
print &quot;0: $nb\n&quot; ;<br>
<br>
$nb = 0 ;<br>
multi (\%hash1, \$nb) ;<br>
print &quot;1: $nb\n&quot; ;<br>
<br>
#my $nb = multi (\%hash2, 0) ;<br>
#print &quot;$nb\n&quot; ;<br>
<br>
<br>
===========================================================================<br>
 Patrick DUPRÉ                                 | | email: <a href="mailto:pdupre@gmx.com" target="_blank" rel="noreferrer">pdupre@gmx.com</a><br>
 Laboratoire de Physico-Chimie de l&#39;Atmosphère | |<br>
 Université du Littoral-Côte d&#39;Opale           | |<br>
 Tel.  (33)-(0)3 28 23 76 12                   | | Fax: 03 28 65 82 44<br>
 189A, avenue Maurice Schumann                 | | 59140 Dunkerque, France<br>
===========================================================================<br>
<br>
<br>
&gt; Sent: Thursday, November 01, 2018 at 3:10 AM<br>
&gt; From: &quot;Pau Amma&quot; &lt;<a href="mailto:pauamma@gundo.com" target="_blank" rel="noreferrer">pauamma@gundo.com</a>&gt;<br>
&gt; To: perl &lt;<a href="mailto:perl@mongueurs.net" target="_blank" rel="noreferrer">perl@mongueurs.net</a>&gt;<br>
&gt; Subject: Re: [Perl] multi hash<br>
&gt;<br>
&gt; &gt; my %hash1 ;<br>
&gt; &gt; $hash {A} = 1 ;<br>
&gt; &gt; $hash {B} = 2 ;<br>
&gt; &gt;<br>
&gt; &gt; my %hash2 ;<br>
&gt; &gt;<br>
&gt; &gt; $hash {A} {b} = 2 ;<br>
&gt; &gt; $hash {B} {a} = 3 ;<br>
&gt; &gt; $hash {B} {b} = 4 ;<br>
&gt; &gt;<br>
&gt; &gt; my $nb = multi (\%hash1, 0) ;<br>
&gt; &gt; print &quot;$nb\n&quot; ;<br>
&gt; &gt;<br>
&gt; &gt; my $nb = multi (\%hash2, 0) ;<br>
&gt; &gt; print &quot;$nb\n&quot; ;<br>
&gt; &gt;<br>
&gt; &gt; Il faudrait renvoyer 1 pour le 1ier cas et 2 pour le second<br>
&gt; <br>
&gt; OK, ça ressemble à la  profondeur (aussi appelée hauteur). Y a-t-il une<br>
&gt; raison de ne pas utiliser (par exemple) Tree::Simple et sa méthode<br>
&gt; getHeight? (cf <a href="https://metacpan.org/pod/Tree::Simple#Accessor-Methods" rel="noreferrer noreferrer" target="_blank">https://metacpan.org/pod/Tree::Simple#Accessor-Methods</a>)<br>
&gt; <br>
&gt; &gt; &gt; J&#39;ai construis des multi hassh (HoHoHoH...)<br>
&gt; &gt; &gt; dont je voudrais connaitre le nombre de hash.<br>
&gt; &gt;<br>
&gt; &gt; La question me parait un peu vague: s&#39;agit il du nombre de feuilles de<br>
&gt; &gt; l&#39;arbre (car c&#39;en est un, en fin de compte)? du nombre total de noeuds?<br>
&gt; &gt; de la profondeur de l&#39;arbre?<br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Perl mailing list<br>
&gt; <a href="mailto:Perl@mongueurs.net" target="_blank" rel="noreferrer">Perl@mongueurs.net</a><br>
&gt; <a href="http://listes.mongueurs.net/mailman/listinfo/perl" rel="noreferrer noreferrer" target="_blank">http://listes.mongueurs.net/mailman/listinfo/perl</a><br>
&gt; Attention, les archives sont publiques<br>
&gt;<br>
_______________________________________________<br>
Perl mailing list<br>
<a href="mailto:Perl@mongueurs.net" target="_blank" rel="noreferrer">Perl@mongueurs.net</a><br>
<a href="http://listes.mongueurs.net/mailman/listinfo/perl" rel="noreferrer noreferrer" target="_blank">http://listes.mongueurs.net/mailman/listinfo/perl</a><br>
Attention, les archives sont publiques<br>
</blockquote></div></div></div>