chmod LIST

更改文件列表的权限。列表的第一个元素必须是数字模式,它应该是一个八进制数,并且绝对不能是八进制数字的字符串:0644是可以的,但"0644"不行。返回成功更改的文件数量。如果只有字符串,请参见 oct

my $cnt = chmod 0755, "foo", "bar";
chmod 0755, @executables;
my $mode = "0644"; chmod $mode, "foo";      # !!! sets mode to
                                            # --w----r-T
my $mode = "0644"; chmod oct($mode), "foo"; # this is better
my $mode = 0644;   chmod $mode, "foo";      # this is best

在支持 fchmod(2) 的系统上,您可以在文件之间传递文件句柄。在不支持 fchmod(2) 的系统上,传递文件句柄会引发异常。文件句柄必须作为全局变量或全局变量引用传递才能被识别;裸词被视为文件名。

open(my $fh, "<", "foo");
my $perm = (stat $fh)[2] & 07777;
chmod($perm | 0600, $fh);

您还可以从 Fcntl 模块导入符号 S_I* 常量

use Fcntl qw( :mode );
chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
# Identical to the chmod 0755 of the example above.

可移植性问题:"perlport 中的 chmod".