in reply to Re: Re: Re: How to swap scalar values without copies
in thread How to swap scalar values without copies

I think that Data::Swap does exactly this. The Swap.xs file, once stripped of all checks, looks like:
#include "EXTERN.h" #include "perl.h" #include "XSUB.h" MODULE = Data::Swap PACKAGE = Data::Swap void swap(foo, bar) SVref foo SVref bar PREINIT: void *any; U32 flags; CODE: any = foo->sv_any; flags = foo->sv_flags; foo->sv_any = bar->sv_any; foo->sv_flags = bar->sv_flags; bar->sv_any = any; bar->sv_flags = flags;

But for this you need to translate the .xs into a .c, compile the latter and place the resulting shared object in blib somewhere in the hierarchy. And you need also a Swap.pm module bootstrapping it.

I would like to avoid to ask people to install this module to run my code. Is it possible to hide these files in my user hierarchy?

I begin to believe that there is no native way to solve my original problem in Perl5.