このエントリーをはてなブックマークに追加


Perlでパーミッションを変更する・chmod

Perlのmkdirでパーミッションを指定してもumaskが有効になるためmkdirに指定したパーミッション値になりません。
(umaskが0であれば意図したパーミッションになりますが…)

以下にディレクトリおよびファイルのパーミッションを変更するchmodについてサンプルコードを記します。


スポンサーリンク

関連記事

動作確認環境

  • 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のサンプルコード

本サンプルコードを実行する前に、端末から以下のコマンドでファイルおよびディレクトリを作成しました。

$ 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でパーミッションを変更するときのサンプルコードでした。


スポンサーリンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:31:40