#navi(../)
* Perlでパーミッションを変更する・chmod [#v8562c65]
Perlのmkdirでパーミッションを指定してもumaskが有効になるためmkdirに指定したパーミッション値になりません。~
(umaskが0であれば意図したパーミッションになりますが…)
以下にディレクトリおよびファイルのパーミッションを変更するchmodについてサンプルコードを記します。
#contents
#htmlinsertpcsp(ll-top.html,ll-sp.html)
* 関連記事 [#b7d6b325]
-[[ファイルから1行ずつ読み込む方法>Perl/サンプル/ファイルから1行ずつ読み込む方法]]
-[[Perlでファイル・ディレクトリの有無を確認する>Perl/サンプル/ファイル・ディレクトリの有無を確認する]]
-[[Perlでディレクトリを作成する・mkdir・mkpath>Perl/サンプル/ディレクトリを作成する・mkdir・mkpath]]
-[[Perlでパーミッションを変更する・chmod>Perl/サンプル/パーミッションを変更する・chmod]]
* 動作確認環境 [#r2c8ac86]
-Perl
$ perl -v
This is perl 5, version 14, subversion 2 (v5.14.2) built for i686-linux-gnu-thread-multi-64int
(with 57 registered patches, see perl -V for more detail)
<snip>
-OS
$ lsb_release -d
Description: Ubuntu 12.04.4 LTS
* chmodのサンプルコード [#jc7a0671]
本サンプルコードを実行する前に、端末から以下のコマンドでファイルおよびディレクトリを作成しました。
$ touch foo.txt
$ mkdir bar
パーミッションは以下の通りです。
$ ls -ld foo.txt bar/
drwxrwxr-x 2 sakura sakura 4096 3月 6 11:21 bar/
-rw-rw-r-- 1 sakura sakura 0 3月 6 11:21 foo.txt
umask値は以下の通りです。
$ umask
0002
-サンプルコード1
use strict;
use warnings;
chmod 0777, 'foo.txt';
chmod 0777, 'bar';
上記のサンプルコードを実行すると以下のようにパーミッションが変更されたのが確認できます。
$ ls -ld foo.txt bar/
drwxrwxrwx 2 sakura sakura 4096 3月 6 11:21 bar/
-rwxrwxrwx 1 sakura sakura 0 3月 6 11:21 foo.txt
上記のサンプルコードを以下のように書くこともできます。~
上記と同様の動作になります。
use strict;
use warnings;
my @t = ('foo.txt', 'bar');
chmod 0777, @t;
以上、Perlでパーミッションを変更するときのサンプルコードでした。
#htmlinsertpcsp(ll-btm.html,ll-sp.html)