http://www.perlmonks.org?node_id=11110234


in reply to Re: create a relative symlink
in thread create a relative symlink

Thanks for asking, Dave.

The issue here is, that my script is not running in the directory where the target is. Currently the linking looks something like this

my $newname="/home/script/data/archive/currentfile";
my $targetfile="/home/script/data/archive/infofile-2019-12-16";
symlink $targetfile, $newname;

In order for the link to become relative I think I will have to do a chdir to the directory of $newname and make the path of $targetfile be relative to that.

As both are in my case, in the same directory, the relative-path part is easy, but would it be different directories, it would be a bit more complicated.

As the script is not running in the /home/script/data/archive directory, I think for symlink to create a working relative link, I need to do a chdir first. But then I need to change directory back as well.

As the ln command has a "make a relative link" option, I thought there might be something available in perl as well. So in order not to reinvent the wheel, I'm asking…


s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e