Проблема, касающаяся символической ссылки в perl - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приведенный ниже код, который я получил только с помощью: как показано ниже:

abc -> test1

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Первый аргумент для synlimk - это путь, который вы хотите указать для цели ссылки. Вы получаете /home/test/abc_test/test1, потому что вы передаете /home/test/abc_test/test1. Если вы хотите test1, вам нужно передать test1.


Если вы хотите скопировать точную цель, вы можете использовать следующее:

my $src_link = "$ENV{HOME}/tmp/abc_test/xyz";
my $dst_link = "$ENV{HOME}/tmp/test_scripts/xyz";

defined( my $target = readlink($src_link) )
   or die("Can't read symlink \"$src_link\": $!\n");

symlink($target, $dst_link);
   or die("Can't create symlink \"$dst_link\": $!\n");

Например , если вы начнете с

/home/test/abc_test/xyz -> test1       # Points to /home/test/abc_scripts/test1

, то приведенное выше создаст

/home/test/test_scripts/xyz -> test1   # Points to /home/test/test_scripts/test1
0 голосов
/ 09 апреля 2020

Ваш код устанавливает путь, который вы хотите удалить, поэтому измените его на:

my $x = symlink $link1, "/home/test/test_scripts/$link";

вместо того, что у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...