1
我正在尝试写入现有文件并同时更改其权限。例如:写入现有文件并更改权限
use warnings;
use strict;
use File::Slurp 'write_file';
my $script="#! /bin/bash
echo \"Hello\"
";
my $saveName='test.sh';
unlink $saveName if -f $saveName;
writeFile($saveName,$script,0755);
writeFile($saveName,$script,0775);
sub writeFile {
my ($saveName,$script,$mode) = @_;
printf "Writing file with permissions %04o\n", $mode & 07777;
write_file($saveName,{perms=>$mode},\$script);
my $actualMode = (stat($saveName))[2];
printf "Actual file permissions are %04o\n", $actualMode & 07777;
}
这使输出:
Writing file with permissions 0755
Actual file permissions are 0755
Writing file with permissions 0775
Actual file permissions are 0755
为什么是第二写操作之后的许可仍然0755
? (我会想到它是0775
)
谢谢,但这对我来说似乎是一种奇怪的方法。这意味着如果你想使用'perms'选项来'write_file',你首先必须检查文件是否已经存在。如果是这样的话,你必须明确地删除它,或者在你编写文件后使用'chmod' .. – 2014-10-19 08:46:55
这不是由模块控制,而是由'sysopen'控制。我将添加文档以向您展示。 – TLP 2014-10-19 09:05:08