Наконец, я пошел по методу ниже.
my $dir = "/path/";
my $smlinkdir = "/smlink/path/";
chdir($smlinkdir) or die "Cant chdir to $smlinkdir $!";
if(-d $smlinkdir) {
system(cp, '--recursive', '--preserve=all', '--no-dereference', '--symbolic-link', "$dir", "$smlinkdir");
} else {
exit 1
}
это сработало также, и я пошел с этим, так как это дает ожидаемый результат.