in reply to symbolic/hard links system calls

The way to get a file from one filesystem to another is to copy it first and then unlink the original. If you "use File::Copy", there's a move function available to do it for you.

use File::Copy; move '/fsa/file', '/fsb/file' or die "Can't move: $!\n";

From a quick glance at File::Copy, it looks as if it will use rename, if possible.