ここにはわかりません。 perlで、 perlのchmod関数とmkdir関数へのアクセス権の受け渡し
my $mode = (stat $file)[2];
その後、
$file
のは、私はファイル(ハンドル)を持って言わせては種類と権限として記述ファイルの
モードを与えます。次に、
chmodのドキュメントでは、
statから
chmodにモードを送信するときにファイルタイプをマスクすることをお勧めします。
my $perm = (stat $file)[2] & 07777;
chmod($perm | 0600, $file);
同様に、mkdirためのドキュメントはmkdir(FILENAME,MASK)
が「(umaskで修正されるように)MASK
で指定された権限を持つFILENAME
によって指定されたディレクトリを作成する。」ことを示しています
Alrighty。ここに私が得ないものがあります。コマンドラインでは、デフォルトの権限drwxr-xr-x(8進数0755)を使用して、自分のホームディレクトリにdir tempを作成します。その後
- perlのSTATは、このディレクトリのモードは、私は、X =(1)で
chmod(x,'temp')
を期待16877. $perms = (stat 'temp')[2] & 07777;
リターン493$perms = sprintf("%04o",(stat 'temp')[2] & 07777);
戻っ0755
であることを私に告げると、 (2)temp/
のパーミッションを何かに変更する。しかし、すべての3つのdrwxr-xr-x
を与える(確かに(3)あなたはchmod(oct($perms),'temp);
を行う必要があります)同様に、mkdir(temp,16877)
、mkdir(temp,493)
、mkdir(temp,0755)
はすべてtemp/
に許可drwxr-xr-x
を与える。
私の質問:本当に何が起こっているのですか?どのようにchmodとmkdirがこれらの3つの異なる値をとり、temp/
に同じアクセス権を設定するのですか?私は1つの答えが「それを行う方法は2つ以上あります」と思っていますが、それは問題ありませんが、ここで何が起こっているのかを理解したいと思います。また、権限値をこれらの関数に渡すために推奨される方法は何ですか?ありがとう!
x =(1)と(2)で "chmod(x、 'temp')というフレーズを理解できません。明確にすることはできますか? – msw