use Inline C => Config => BUILD_NOISY => 1; use Inline C; $arref = get_data(); print $arref, "\n"; print $arref->[0]->{mickey}, "\n"; print $arref->[0]->{donkey}, "\n"; __END__ __C__ SV* get_data() { AV * results; HV * rh = newHV(); results = newAV(); hv_store(rh, "mickey", 6, newSVpv("mouse", 0), 0); hv_store(rh, "donkey", 6, newSVpv("kong", 0), 0); av_push(results,newRV_noinc((SV*)rh)); return newRV_noinc((SV*)results); }