25.6. External Subroutines (XS)
XS code can usually be made to work with any platform, but libraries
and header files might not be readily available, or the XS code itself
might be platform specific. If the libraries and headers are
portable, then it's a reasonable guess that the XS code can be made
portable as well.A different type of portability issue arises when writing XS code: the
availability of a C compiler on the end user's platform. C brings with
it its own portability issues, and writing XS code will expose you to
some of those. Writing in pure Perl is an easier way to achieve
portability because Perl's configuration process goes through extreme
agonies to hide C's portability blemishes from you.[2]
[2] Some
people on the margins of society run Perl's Configure script as a
cheap form of entertainment. People have even been known to stage
"Configure races", between competing systems and wager large sums on
them. This practice is now outlawed in most of the civilized world.