package Foo; ## Inline part skipped. __C__ SV* new() { HV* hv = newHV(); Foo* foo = newFoo(); //C constructor. // Now, do something with hv and foo, then return blessed_hashref; } void setName(SV* obj, char* name) { Foo* foo = get_foo_from(obj); // and call the Foo-C method: Foo_set_name(foo); } package main; my $foo = Foo->new(); $foo->setName("Lorelai"); $foo->{shortname} = "Rory";