You can access package variables directly: $::data = "this is a test"; test();
use Inline C => <<'END_OF_C_CODE'; void test() { printf("here: %s\n", SvPV_nolen(get_sv("::data",0))); } END_OF_C_CODE …see “perldoc perlguts”: If you know the name of a scalar variable, you can get a pointer to its SV by using the following: SV* get_sv("package::varname", 0); This returns NULL if the variable does not exist. You can’t access lexical-scoped scalars (“strict” ones) this way, because they often do not have a name at all. You can place reference of your my-var to package variable though and dereference it in your C code. Regards, Vadim. From: Perf Tech [mailto:perfte...@gmail.com] Sent: Wednesday, November 23, 2016 8:30 AM To: inline@perl.org Subject: Question about accessing global data from a line function Dear expert, I am trying to access perl global variable ($data in this case) from within a inline C function, but the "data" variable I used is not defined. Any idea how to do it? Thanks Jin $data = "this is a test"; test(); use Inline C => <<'END_OF_C_CODE'; void test() { printf("here: %s\n", SvPV(data, PL_na)); } END_OF_C_CODE