ためになるホームページ お問い合わせ




TOP > Perl > ファイルとディレクトリの扱い
ファイルの削除
unlink演算子を使ってファイルを削除する事ができる。unlinkは、削除した個数を返す。また、unlinkはディレクトリを消す事ができないし、パーミッションに関係なく削除できる。但し、対象ディレクトリが自分の所有の時のみ。(/etc/などは、システム管理者の所有なので削除できない)

unlinkの例
unlink "aaa.txt", "bbb.txt", "ccc.txt";
#unlinkはリストを受け取れるので、グロブを使って書くこともできる
unlink glob "*.cpp";
foreach $fname (qw/ aaa.txt bbb.txt ccc.txt/)
{
  unlink $fname or warn "not delete $fname:$!";
}


ファイル名の変更
すでに存在するファイル名を変更するには、renameを使う。
(書式)rename 変更前のファイル名, 変更後のファイル名;

renameの例
foreach $fname (glob "*.cpp")
{
  my $newfile = $fname;
  $newfile =~ s/\.cpp/\.c/;
  #上記の2行は以下の一行と一緒
  #(my $newfile = $file) =~ s/\.cpp/\.c/;
  if (-e $newfile)
  {
    warn "$newfile exist $!";
  }
  elsif (rename $fname $newfile)
  {
    #処理を行わない
  }
  else
  {
    warn "error! $!";
  }
}


ハードリンクとシンボリックリンク
ハードリンクはlink関数で作成できる。
(書式)link "元ファイル名", "後ファイル名";
一方、シンボリックリンクは、symlinkで作成できる。
(書式)symlink "対象ファイル名", "シンボリック名";
シンボリックのさしている場所を示すには、readlinkを使う。
(書式)実態の場所 = readlink "シンボリック名";

ディレクトリの作成と削除
ディレクトリの作成は、mkdirを使う。
(書式) mdkir "ディレクトリ名", 初期パーミッション

mkdirの例
mkdir "tmp", 0777 or warn "can not reate dir:tmp! $!";
#ディレクトリの削除には、rmdirを使う
rmdir "tmp";


パーミッションの変更
パーミッションの変更は、chmodを使う。
(書式) chmod パーミッション値, "変更する名前";

ファイルのオーナーを変更する
ファイルのオーナーを変更するには、chownを使う。
(書式)chown ユーザーID, グループ名, "対象ファイル";

chownの例
$usr= 1000;
$group = 200;
chown $usr, $group, glob "*.cpp";
#IDでしか使えないので、IDを調べるには、getpwnam, getgrnamを使う。
$usr_id = getpwnam "bbb";
$usr_grp_id = getgrnam "ccc";


タイムスランプの変更
ファイルのタイムスランプを変更するには、utimeを使う。

utimeの例
$now = time;#現在の時刻
$back = $now - 24 * 60 * 60; #一日前に変更
utime $now, $back, glob "*.cpp";







Copyright 2007 ためになるホームページ All Rights Reserved.