更改文件列表的所有者(和组)。列表中的前两个元素必须是数字 uid 和 gid,按此顺序。任何位置上的 -1 值在大多数系统中被解释为保持该值不变。返回成功更改的文件数量。
my $cnt = chown $uid, $gid, 'foo', 'bar';
chown $uid, $gid, @filenames;
在支持 fchown(2) 的系统上,您可以将文件句柄传递到文件列表中。在不支持 fchown(2) 的系统上,传递文件句柄会引发异常。文件句柄必须作为全局变量或全局变量引用传递才能被识别;裸词被视为文件名。
以下示例在 passwd 文件中查找非数字 uid
print "User: ";
chomp(my $user = <STDIN>);
print "Files: ";
chomp(my $pattern = <STDIN>);
my ($login,$pass,$uid,$gid) = getpwnam($user)
or die "$user not in passwd file";
my @ary = glob($pattern); # expand filenames
chown $uid, $gid, @ary;
在大多数系统上,除非您是超级用户,否则您不允许更改文件的拥有权,尽管您应该能够将组更改为您的任何辅助组。在不安全的系统上,这些限制可能会放宽,但这并非可移植的假设。在 POSIX 系统上,您可以通过以下方式检测此条件
use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
my $can_chown_giveaway = ! sysconf(_PC_CHOWN_RESTRICTED);
可移植性问题:"perlport 中的 chown".