On Thursday 01 April 2010 21:24:56 Patrick Dupre wrote:
> I am trying similar as in perl:
> $HOH {A}{X}=a;
> $HOH {B}{Y}=b;
> 
> but by using:
> 
Let's translate your XS in Perl

> h_AB = newHV () ;
my %h_AB ;

> hoh = newHV () ;
my %hoh;

> hv_store (h_AB, "X", 1, newSVnv (a), 0) ;
$h_AB{X}='a';

> hv_store (hoh, "A", 1, newRV_inc ((SV*) h_AB), 0) ;
$hoh{A}=\%h_AB ;

> hv_store (h_AB, "Y", 1, newSVnv (b), 0) ;
$h_AB{Y}='b';

> hv_store (hoh, "B", 1, newRV_inc ((SV*) h_AB), 0) ;
$hoh{B}=\%h_AB ; # uh oh

> I get:
> 4 entries:
> A, X
> A, Y
> B, X
> B, Y

Which is expected because $hoh{A} and $hoh{B} refer to the same hash.

> How can I avoid such a behavior ?

By creating a *3rd* hash.

HTH

Dominique
--
http://config-model.wiki.sourceforge.net/ -o- http://search.cpan.org/~ddumont/
http://www.ohloh.net/accounts/ddumont
  • XS hoh Patrick Dupre
    • Re: XS hoh Dominique Dumont

Reply via email to