%module poly %typemap(perl5,out) Object* { if ($source) { $target = sv_newmortal(); char *cname = strdup($source->classname()); sv_setref_pv($target,cname, (void *) $source); free(cname); argvi++; } } %inline %{ #include "Poly.h" %} %include Poly.h