有限会社ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> ディレクトリの処理
  1. ディレクトリの作成
  2. カレントディレクトリの移動
  3. ディレクトリの削除
  4. ディレクトリの読み込み

■ ディレクトリの作成
ディレクトリの作成には、mkdir 関数を使います。
   → mkdir 関数のリファレンス
【書式】
mkdir ディレクトリ名;
if ( mkdir "directory" ) {
   print "ディレクトリの作成に成功しました。";
}
else {
   print "ディレクトリの作成に失敗しました。";
}




■ カレントディレクトリの移動
カレントディレクトリの移動には、chdir 関数を使います。
   → chdir 関数のリファレンス
【書式】
chdir ディレクトリ名;
if ( chdir "./directory" ) {
   print "カレントディレクトリの移動に成功しました。";
}
else {
   print "カレントディレクトリの移動に失敗しました。";
}




■ ディレクトリの削除
ディレクトリの削除には、rmdir 関数を使います。
   → rmdir 関数のリファレンス
【書式】
rmdir ディレクトリ名;
if ( rmdir "./directory" ) {
   print "ディレクトリの削除に成功しました。";
}
else {
   print "ディレクトリの削除に失敗しました。";
}
削除対象のディレクトリ内にファイルが残っている場合には、削除は失敗します。
ファイルを含むディレクトリの場合には、ファイルを削除した後にディレクトリを削除するよう
処理を行なう必要があります。


[ディレクトリ内にファイルが残っている場合の処理方法]
$dir = "./directory/";    ← 削除するディレクトリを変数にセットする

opendir DIR, $dir;
@files = grep { !m/^(\.|\.\.)$/g } readdir DIR;    ← 「.」 「..」 以外のファイルを取得
close DIR;

$flag = @files;    ← ディレクトリ内のファイルの個数を求める

if ( $flag ) {    ← ファイルがみつかった場合のみファイルの削除処理を行なう
   foreach $file ( @files ) {
     unlink "$dir$file";
   }
}

rmdir $dir;    ← ディレクトリの削除




■ ディレクトリの読み込み
ディレクトリ内のファイルを読みこむ場合には、opendir 関数を使ってディレクトリを開き、ディレクトリハンドルを取得します。 このディレクトリハンドルを使って、readdir 関数からディレクトリ内のファイルを読み込みます。 ファイルの読み込みが終了したら、 closedir 関数を使ってディレクトリを閉じます。

  → opendir 関数のリファレンス
  → readdir 関数のリファレンス
  → closedir 関数のリファレンス

〔ファイル名取得のイメージ〕



ファイルの読み込みを行なう場合には opendir 関数で、ディレクトリを一旦開き、readdir 関数でディレクトリ内の要素を読み込みます。 読み込み処理が終了したら、closedir 関数でディレクトリを閉じます。
【書式】
open ディレクトリハンドル "ディレクトリ名";
@files = readdir ディレクトリハンドル;
closedir ディレクトリハンドル;
open DIR "temp";    ← temp ディレクトリをオープンします
@files = readdir DIR;    ← ディレクトリハンドルから配列にデータを読み込みます
close DIR;    ← temp ディレクトリをクローズします
ディレクトリハンドル名には半角英数字が使えます(全角文字は指定できません)。
ディレクトリ名の指定には変数を使うことも可能です。
指定されたディレクトリが存在しない場合には、エラーとなります。




ディレクトリ要素を取得した場合には、「. (現在のディレクトリ)」 や 「.. (一つ上のディレクトリ)」 も取得されます。 ファイルのみを取得したい場合には下記の方法でファイルを取得してください。

open DIR "temp";
@files = map { -f "temp/$_" ? $_ : '' } readdir DIR;    ← ファイルのみ取得
close DIR;
ここでは、map 関数とファイルテスト演算子・条件演算子を使って、ファイルのみを取り出しています。

   → map 関数へのリファレンス
   → ファイルテスト演算子について
   → 条件演算子を使って分岐処理を行なう

ディレクトリ名を取得する場合は、ファイルテスト演算子の 「-f」 の部分を、「-d」 に代えてください。



特定の種類のファイル名を取得したい場合には、ファイルの拡張子を利用します。

open DIR "temp";
@files = grep { /\.html$/ } readdir DIR;    ← HTMLファイルのみ取得
close DIR;
ここでは、grep 関数と正規表現を利用して、HTMLファイルのみを取り出しています。

   → grep 関数へのリファレンス
   → 正規表現について



ディレクトリハンドルの現在の読み取り位置を取得するには、telldir 関数を使います。
【書式】
telldir ディレクトリハンドル;
この関数は、次に紹介する seekdir 関数と連携してよく使われます。



ディレクトリハンドルの読み取り位置を変更するには、seekdir 関数を使います。
【書式】
seekdir ディレクトリハンドル, 読み取り位置;

読み取り位置には、telldir 関数からの返り値を使います。
opendir DIR, "./directory";
$position = telldir DIR;
seekdir DIR, $position;
・・・

close DIR;





← 前のページへ戻る 次のページへ →


| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 有限会社ミスティーネット Inc. All Right Reserved.