in reply to Some guidance required regarding Perl XS

Of course you can write Perl extensions without XS, but the XS macros encapsulate much function. You can easily have your C compiler expand the macros to the full C code. For example gcc -E will output the expanded C file and there also is expand-macro.pl in the Perl distribution that will expand macros so you can understand them better.

If you are dealing with complex data structures, I would write code in Perl to convert the complex data structure to a string or a simpler data structure and then pass that to the C function(s). Dealing with complex data structures is usually much easier from Perl than from C.

For documentation of some macros, see perlxs.