That's funny; I relocate my Perl port niPerl without recompiling. I use a VBScript to do the relocation that edits Config.pm during the MSI installation process. I've had no complaints yet, seems to work too. I believe ActiveState do the same sort of thing.
Comment on Re^5: modifying @INC other than use lib?
ActivePerl uses a script reloc_perl to do this which in turn uses a module ActiveState::RelocateTree which documentation says:
Perl can't just be copied into a new location without relocating some files.
In Windows this is less of a problem because the executable knows its actual
location and uses that to find its library tree. On Unix, the location of the
libraries must be encoded within the perl binary.