Akihiro's Programmer Blog

Technology Notes for Personal

「初めてのPerl」 第十三章 - 2

第十三章の続きから。


第十三章 ディレクトリ操作

内容


用語集

用語 説明
ハードリンク 同一のiノードを持つこと以外はコピーと挙動は似ている
シンボリックリンク windowsで言うショートカットのイメージ


Point

リンクを作りたい
# 指定したファイルからハードリンクを作るにはlink関数を使う
link 'hoge.txt', 'fuga.txt' or warn "$!";

# これでhoge.txtへのハードリンクを持つfuga.txtを作ることが出来る
# Unixコマンドで言うlnに似ている


シンボリックリンクを作りたい
# 指定したファイルからハードリンクを作るにはlink関数を使う
symlink 'hoge.txt', 'fuga.txt' or warn "$!";

# これでhoge.txtへのシンボリックリンクを持つfuga.txtを作ることが出来る
# Unixコマンドで言うln -sに似ている


ディレクトリの作成・削除がしたい
# mkdirでディレクトリの作成が出来る
mkdir 'hoge', 0755 or warn "$!";

# 第2引数でパーミッションの指定が出来る


# また、rmdirでディレクトリの削除が出来る
rmdir 'hoge';

# ただし、rmdirでは空のディレクトリしか削除出来ない
# まとめて削除したい場合はFile::Pathモジュールのrmtreeを使うと良い


パーミッションを変更したい
# chmodでファイルやディレクトリのパーミッションを変更出来る
chmod 0755, 'hoge';


ファイルのオーナーを変更したい
# chownでファイルの所有者のユーザとグループを変更出来る
my $user_id  = 501;
my $group_id = 501;
chown $user_id, $group_id, 'hoge.txt';

# ただ、IDで指定する必要があるため
# それぞれユーザ名とグループ名から変換すると良い
defined (my $user_id = getpwnam 'user_name') or die 'bad user';
defined (my $group_id = getgrnam 'group_name') or die 'bad group';
chown $user_id, $group_id, 'hoge.txt';

# 変更したくない場合は-1を指定すると良い


タイムスタンプを変更したい
# utimeでファイルのアクセス時間と更新時間を変更出来る
my $now       = time;
my $yesterday = $now - 24 * 60 * 60;
utime $now, $yesterday, 'hoge.txt';


次回は

次回は第十四章から。