如何复制Perl中的符号链接?
在保留所有符号链接属性(如所有者和权限)的同时,如何在Perl程序中复制符号链接(而不是它指向的文件)?
谢谢,夹钳
在Perl中,您可以使用readlink()
函数来查找符号链接的目标。
您也可以使用lstat()
函数来读取符号链接的权限(与stat()
,它将读取由符号链接指向的文件的详细信息)。
实际上,如果没有额外的帮助,就不能在新的符号链接上设置所有权,因为Perl不会公开lchown()
系统调用。 为此,您可以使用CPAN中的Perl Lchown
模块。
假设有足够的权限(nb:未经检查的代码)
use Lchown;
my $old_link = 'path to the symlink';
my $new_link = 'path to the copy';
my $dst = readlink($old_link);
my @stat = lstat($old_link);
symlink $dst, $new_link;
lchown $stat[4], $stat[5], $new_link; # set UID and GID from the lstat() results
您不必担心符号链接上的权限 - 它们始终显示为-rwxrwxrwx
模块File :: Copy :: Recursive负责处理这个问题。 默认情况下,它将复制符号链接并尝试保留所有权。
链接地址: http://www.djcxy.com/p/56765.html上一篇: How do I copy symbolic links in Perl?
下一篇: stopping ios5 lifecycle events automatically being called