[Perl] multi hash

Patrick Dupre pdupre at gmx.com
Jeu 1 Nov 09:30:10 CET 2018


Ma solution

sub multi_HoH_size {
  my ($hoh, $nb) = @_ ;
  return 0 if ((!keys %$hoh) || !defined ($hoh)) ;
  $$nb++ ;
  my $flag = 0 ;
  my $key ;
  foreach (keys %$hoh) {
    $flag = 1 if (ref ($$hoh {$_}) eq "HASH") ;
    $key = $_ ;
    last ;
    }
  multi_HoH_size ($$hoh {$key}, $nb) if ($flag) ;
  }

Il y a surement mieux !

===========================================================================
 Patrick DUPRÉ                                 | | email: pdupre at gmx.com
 Laboratoire de Physico-Chimie de l'Atmosphère | |
 Université du Littoral-Côte d'Opale           | |
 Tel.  (33)-(0)3 28 23 76 12                   | | Fax: 03 28 65 82 44
 189A, avenue Maurice Schumann                 | | 59140 Dunkerque, France
===========================================================================


> Sent: Thursday, November 01, 2018 at 3:38 PM
> From: "Sylvain Lhullier" <sylvain at lhullier.org>
> To: "Liste francophone pour les questions générales sur Perl" <perl at mongueurs.net>
> Subject: Re: [Perl] multi hash
>
> Patrick Dupre a écrit :
> > [...]
> > Mais, il y a quelque chose que je ne comprends pas dans ce que j'ai ecris.
> > Pourqoui $nb n'ai pas passe dans l'appel ?
> > sub multi {
> >   my ($hoh, $nb) = @_ ;
> >   [...]
> >       multi (%{$hoh {$i}}, $nb) ;
> > }
> 
> Je pense que dans cet appel récursif, tu passes en paramètre une hash "applatie"
> et non une ref sur la hash. Plutôt écrire ce qui suit ?:
>    multi ($hoh{$i}, $nb) ;
> sans le %
> 
> Librement,
> 
> -- 
> Sylvain Lhullier
> Formation Perl  http://formation-perl.fr/
> Président des Mongueurs de Perl  http://mongueurs.net/
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
> Attention, les archives sont publiques
>


Plus d'informations sur la liste de diffusion Perl