Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. ファイル操作
  3. here

階層を持つディレクトリを一度に削除する

階層を持つディレクトリを一度に削除するにはFile::Pathモジュールのrmtreeを使用します。rmtree の戻り値は、削除することのできた、ファイル数です。

use File::Path 'rmtree';
rmtree $dir;

サンプル

階層を持つディレクトリを一度に削除するサンプルです。

use strict;
use warnings;
use File::Path 'rmtree';

# ディレクトリを削除する
# 準備(ディレクトリの作成)
my $dir1 = "dir_20080527_$$";
my $dir2 = "$dir1/dir2";
mkdir $dir1
  or die "$dir1 を作成することができません。 : $!";
mkdir $dir2
  or die "$dir2 を作成することができません。 : $!";
print "準備: $dir1 と $dir2 が作成されました。\n\n";
print "1: 階層を持つディレクトリを一度に削除する。\n"; 

{
  # 警告をキャッチするには、__WARN__シグナルを
  # 捕獲するシグナルハンドラを使うしかない。
  # ( 古いrmtreeの実装の場合 )
  # 第一引数に、警告の内容が格納される。
  local $SIG{__WARN__} = sub {
    my $msg = shift;
    die "$msg";
  };

  if (-d $dir1) {
    # rmtree 関数で、 warn が呼ばれたら、
    # 上記の sub{ } の中に移り、die で終了する。
    rmtree($dir1); 
                   
    print "$dir1 は削除されました。\n";
  }
}

(参考)local - パッケージ変数を一時的に退避して復元

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。