title: How do I build a Perl hash in C, using SWIG?
body: <p>I'm trying to create a Perl hash from within a C library. Here's what I've got so far:</p>
  
  <pre><code>static void add_string_to_perl_hash ( HV *hv, char * key, char *value ) {
  
  SV *obj = sv_2mortal(newSVpv(value, 0));
  
  hv_store(hv, (const char *)key, strlen (key), obj, 0);
  
  SvREFCNT_inc(obj);
  
  }
  
  SV * do_get_test_hash () {
  
      static char *foo ="foo";
      static char *bar ="bar";
  
      HV *hv;
  
      hv = newHV();
      add_string_to_perl_hash ( hv, "foo",   foo);
      add_string_to_perl_hash ( hv, "bar",   bar);
  
      return sv_2mortal(newRV_noinc((SV*)hv));
  }
  </code></pre>
  
  <p>Trying it out: I don't get anything that makes any sense to me:</p>
  
  <pre><code>use testlib;
  use Data::Dumper;
  
  print Dumper (testlib::do_get_test_hash());
  
  $VAR1 = bless( do{\(my $o = 5359872)}, '_p_SV' );
  </code></pre>
  
  <p>Ideas?</p>