void interruptTest(void(*function)(void)){ isrFunctions[1] = function; isrFunctions[1](); } #### use warnings; use strict; use Inline ('C' => 'DATA', libs => '-lwiringPi'); # direct call callback(); # extern call testing(); sub p_callback { print "in perl callback\n"; } __DATA__ __C__ #include #include #include void testing(); void callback(); void callback(){ dSP; PUSHMARK(SP); PUTBACK; call_pv("p_callback", G_DISCARD|G_NOARGS); FREETMPS; LEAVE; } void testing(){ interruptTest(&callback); }