我需要这个程序的帮助。作为我项目的一部分,我需要
创建一个目录。我正在使用系统功能来执行此操作,但是
后来被告知 Perl 有一个名为 mkdir 的内置函数。 .
我在 Ubuntu 10.04 上。问题是mkdir
似乎没有按需要工作。
它创建目录,但权限不同。这里
是我创建目录的函数:
sub createDir {
my ($dir,$perm) = @_;
unless(-d $dir) {
mkdir $dir,$perm or die "$!";
}
}
我在程序的许多部分都将其称为:
createDir('.today','0755');
目录 .today 已创建,但问题在于权限,
它没有
0755
允许。我究竟做错了什么?
我的 Perl 详细信息是:
$perl -v
这是 perl,为 x86_64-linux-thread-multi 构建的 v5.8.8
最佳答案
您将权限作为 传递字符串 . mkdir
预计它是 数字 .但是字符串中的八进制数被解释为 十进制 .所以'0755'
被解释为十进制 755
并且正在被 mkdir
使用.
要解决此问题,您可以调用传递给它数字权限的子程序:
createDir('.today',0755);
或者,您可以使用
oct
函数将八进制字符串转换为数值。子程序调用保持不变:
createDir('.today','0755');
但它的定义改为使用
oct
功能如下:mkdir $dir,oct($perm) or die "$!";
关于perl - 如何使用 Perl 的 mkdir 创建具有 'right' 权限的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057528/