Hi Schwa, Sorry to take so long getting back to you. I did a little digging around, re Perl script compile errors and found some very bare pointers... Are you called the Perl script with eval_pv or eval_sv? This advice from Nick Ing-Simmons may be useful to you if so. Both of these functions are like Perl's eval() function, and they leave the value of $@ set appropriately. You can get at the value of Perl's $@ variable with the ERRSV macro, like this if (SvTRUE(ERRSV)) { char *error_message = SvPV_nolen(ERRSV); } Getting this information is like pulling your own teeth out, but without the inherent charm and sheer fun that pulling your own teeth out offers. So then, as long as you have the ERRSV macro defined, given the information that ERRSV is what we need, re-reading the perlembed man page is a little more informative. static PerlInterpreter *perl = NULL; int main(int argc, char **argv, char **env) { char *embedding[] = { "", "persistent.pl" }; char *args[] = { "", DO_CLEAN, NULL }; char filename [1024]; int exitstatus = 0; STRLEN n_a; if((perl = perl_alloc()) == NULL) { fprintf(stderr, "no memory!"); exit(1); } perl_construct(perl); exitstatus = perl_parse(perl, NULL, 2, embedding, NULL); PL_exit_flags