Akihiro's Programmer Blog

Technology Notes for Personal

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

第十三章から。


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

内容


用語集

用語 説明
グロブ パターンにマッチしたファイル名を取得出来る
ファイルハンドル ファイルの入出力するためのPerlで用いられるファイルの概念
ディレクトリハンドル ファイルハンドルのディレクトリに置き換えたような物。扱うのはファイル名


Point

ディレクトリツリーを移動したい
# プログラム中の作業ディレクトリを移動する
chdir '/etc' or die "cannot chdir to /etc: $!";

# Unixコマンドのcdみたいなもの
# エラーが発生した場合、$!に値がセットされる


パターンにマッチしたファイル名を取得したい
# ファイル名をパターンマッチで取得したい時はグロブを使う
my @pm_files = glob '*.pm';

# これで作業ディレクトリにある*.pmにマッチするファイル名のリストが返ってくる


# こういう表現も出来る
my @pm_files = <*.pm>;


# また、ディレクトリハンドルを使っても同じようなことが出来る
my @pm_files;
opendir my $dh, '/etc' or die "Cannot open /etc: $!";
foreach $name (readdir $dh) {
    if ($name =~ /\.pm$/) {
        push @pm_files, $name;
    }
}


ファイルを削除したい
# unlinkにリストを渡すとそのファイルを削除出来る
unlink qw/hoge fuga piyo/;

# 削除に成功したら1、失敗したら0を返す


# どのファイルの削除に成功したのかを判断するにはループして一つずつ削除すると良い
foreach my $file (qw/hoge fuga piyo/) {
    unlink $file or warn "failed on $file: $!\n";
}


ファイル名を変更したい
# renameでファイル名を変更出来る
rename 'hoge', 'fuga';


# 分かりやすいように=>を使うと良い
rename 'hoge' => 'fuga';


次回は

次回は第十三章の続きから。