I know a little bit about XS - just enough to be dangerous (ie "a little knowledge is a dangerous thing"). I couldn't help at all with SWIG (though "swigging grog" is what I've been doing for most of the evening :-)
in reply to $perl_extension ? require SWIG : require XS;
One advantage of XS over SWIG seems to be that help and advice is much more readily available for XS than it is for SWIG - simply because more people are using XS.
Another advantage of taking the XS route, imho, is that Inline::C (which should perhaps have instead been called "Inline::XS") is available - which makes the learning curve so much gentler.