ディレクトリの操作
ディレクトリの中にあるファイル名の読み出しにはディレクトリハンドルを使います。
ディレクトリハンドルは任意の名前で英大文字にします。

opendir ディレクトリハンドルを作成し、指定したディレクトリに関連付けます。
      例 opendir DATA,"data";
        opendir(DATA,"data") || &error("オープンできません");
         → オープンに失敗すれば &errorサブルーチンを実行します。

closedir ディレクトリハンドルをクローズします。
      例 closedir DATA;

readdir ディレクトリの中にあるファイル名を読み出します。但し、カレントディレクトリ「.」と上位ディレクトリ「..」を含みます。
      例 $file = readdir DATA; ファイル名を格納順に読み出します。
        @file = readdir DATA; 全ファイル名を@fileに読み込みます。

mkdir  ディレクトリを作成します。ディレクトリ名とパーミッションを指定します。
      例 mkdir("data",0666);
        mkdir("data",0666) || &error("ディレクトリを作成できません");

rmdir  ディレクトリを削除します。
      例 rmdir("data");
        rmdir("data") || &error("ディレクトリを削除できません");
■プログラム (sample17.cgi)
mkdir("data",0666) || &error("ディレクトリを作成できません");
if (-e "data") {print "dataディレクトリが存在します。<br>";} else {print "dataディレクトリが存在しません。<br>";}
open OUT,">data/data1.txt"; close OUT;
open OUT,">data/data2.txt"; close OUT;

opendir DATA,"data";
while ($file = readdir DATA) {print "$file ";}
closedir DATA;
print "<br>";

opendir(DATA,"data");
@file = readdir DATA;
foreach (@file) {print "$_ ";}
closedir DATA;
print "<br>";

unlink "data/data1.txt","data/data2.txt";
rmdir("data") || &error("ディレクトリを削除できません");
if (-e "data") {print "dataディレクトリが存在します。";} else {print "dataディレクトリが存在しません。";}
###
sub error {print "$_[0]</body></html>\n"; exit;}
■実行結果
dataディレクトリが存在します。
. .. data1.txt data2.txt 
. .. data1.txt data2.txt 
dataディレクトリが存在しません。


HOME Copyright (C) CGI-design All Rights Reserved.