The simplest approach, which one gets by default, is just to pass a void* as a number.
use Inline;
Inline->bind(C => <<END);
static int foo(a) { return a + 3; }
void* address_of_foo () { return (void*)&foo; }
int invoke (void* p, int n) { int (*f)(int) = p; return f(n); }
END
print address_of_foo(),"\n";
print invoke(address_of_foo(),39),"\n";
$ perl -w foo.pl
1075895008
42
$
To get a more opaque object, like swig -perl gives you, requires a bit
more work.
Mitchell Charity
