003.Perl FileControl

(1)ファイルハンドルとファイル名[open ファイルハンドル,ファイル名]  ファイルをオープンするにはopen関数を使用します。ファイルハンドルとはファイルにつけるネームで、ユーザーが自由につけることができます。次にファイル名は実際にオープンするファイルの名前をパス名で指定します。記号は次のとおりです。

<ファイル名 読み込みモード >ファイル名 書き込みモード >>ファイル名 追加モード
(2)読み込みモードでオープン  ファイル読み込みを行うときに読み込みモードでオープンします。
$filename="sqlconnect2.txt";
open FILE1,$filename;
(3)ファイルを新規に作成  ファイルを新規に作成するには①ファイルを書き込みモードでオープンする。②ファイルにデータを書き込む③ファイルをクローズするの流れで行います。
$dir="/";
chdir $dir;
#ディレクトリをC:\に移動しています。
$fname="sample.txt";
open OUT,">$fname";
print OUT "太郎\n";
print OUT "次郎\n";
print OUT "三郎\n";
close OUT;
(4)ファイルにデータを追加  ファイルにデータを追加するには①追加モードでオープンする ②ファイルにデータを書き込む ③ファイルをクローズ の流れで行います。
$dir="/";
chdir $dir;
$fname="sample.txt";
open ADD,">>$fname";
print ADD "太郎\n";
print ADD "次郎\n";
print ADD "三郎\n";
print ADD "こんにちは。本日はお日柄がよく。\n";
close ADD;
print "データを追加しました\n";
(5)ファイルからデータを読み込む  既存のファイルからデータを読み込むには、①ファイルを読み込みモードでオープン②ファイルからデータを読む③ファイルをクローズ の流れで行います。 ファイルからデータを読み込むには、ファイルハンドルを<>で囲んで指定します。 ファイルからデータを読み込む
$dir="/";
chdir $dir;
$fname="sample.txt";
open IN,"$fname";
while($input=){
	print "$input";
	}
	close IN;
print "データを読み込みを完了しました\n";
●レコードを配列変数に代入 配列にファイルのデータを読み込むには次のようにします。
#配列にデータを読み込む
$dir="/";
chdir $dir;
$fname="sample.txt";
open IN,"$fname";
@lines=;
close IN;
配列の内容を表示する
print @lines;
@lines=;
●ファイルの終わりチェック[eof ファイルハンドル] eof関数を使ってファイルの終わりをチェックすることができます。指定したファイルハンドルから読み込もうとしてファイルの終わりになると(eof)になったら真(1)が返ります。
$fname="sample.txt";
open IN,"$fname";
until(eof IN){
	$line=;
	print "$line";
}
close IN;
●ファイルオープンのチェック[or print メッセージ] 読み込みモードオープンではファイルが存在することが前提となりますが、ファイルが存在しないとundef(疑)がかえります。これを次のようにしてチェックすることができます。
$fname="sample.txt";
open IN,$fname or print "Not found "$fname";
●die関数[die "メッセージ"] die関数では指定したメッセージとスクリプト名、行番号を表示してスクリプトを終了します。 次の例ではdie関数を使ってファイルが存在しない場合にはメッセージを表示してスクリプトを終了しています。
$fname="sample.txt";
open IN,$fname or die "Not found $fname";
(6)ファイルの削除とリネーム ●ファイル削除 [unlink ファイル名のリスト] unlink関数は削除に成功したファイルの数を返します。
$dir="/";
chdir $dir;
$num=unlink "sample.txt","y.txt","z.txt";
#削除に成功した数を返します。
print "削除した数は$numファイルです。\n";
●ファイル名を変更(rename)[rename 古いファイル名,新しいファイル名] ファイル名を変更するにはrename関数を使います。ファイル名の変更に成功すれば1を返し、失敗すれば0を返します。
$!はエラーメッセージをもつ特殊関数です。
$dir="/";
chdir $dir;
rename "sample.txt","new.txt" or die "$!";
●ファイルのパーミッションを変更[chmod パーミッション,ファイル名] ファイルのパーミッションを変更するにはchmod関数を使用します。 ファイルは一度に複数指定でき、パーミッションの変更に成功したファイルの個数を返します。
$dir="/";
chdir $dir;
chmod 0666,"sample.txt";
print "sample.txtファイルを全てのユーザーに読み書き可能に変更しました。\n";
(7)ファイル検索 ●ファイル検索[glob 条件][<条件>] 条件を満たすファイルを探索するにはglob関数を使用します。 glob関数はリストコンテキストの中で用いた場合には、条件を満たすファイル名のリストを返します。条件の中では*や?の使用が可能です。
$dir="/";
chdir $dir;
while($name=glob "*.txt"){
	print "$name\n";
}
print "C:\のテキストファイルを出力しました。";
unlink();
print "ファイル名がsampleのファイルを削除しました。";
(8)ディレクトリ ●ディレクトリのオープン[opendir ディレクトリハンドル,ディレクトリ名] ディレクトリをオープンするにはopendir関数を使います。ディレクトリハンドルはユーザが自由につけてよいですが、基本的は大文字を使用したネームにします。
opendir DIR,"/";
●ディレクトリクローズ[closedir ディレクトリハンドル] ディレクトリをクローズするにはclosedir関数を使用します。
closedir DIR;
●ディレクトリの読み込み[readdir ディレクトリハンドル] ディレクトリにあるファイル名のリストをよむにはreaddir関数を使います。
opendir DIR,"/";
@files=readdir DIR;
print "@files";
print "ディレクトリにあるファイル名リストを読み込みました。";
closedir DIR;
●ディレクトリの作成[mkdir "ディレクトリ名",パーミッション] ディレクトリを指定したパーミッションで作成します。戻り値は成功すれば1、失敗すれば0を返します。
$dir="/";
chdir $dir;
mkdir "perldir",0644;
print "ディレクトリを作成しました。";
●ディレクトリの削除[rmdir "ディレクトリ名"] ディレクトリを削除するにはrmdir関数を使います。成功すれば1を返し、失敗すれば0を返します。
$dir="/";
chdir $dir;
rmdir "perldir";
print "ディレクトリを削除しました。";
●カレントディレクトリの移動[chdir "ディレクトリ名"] カレントディレクトリを移動するにはchdirを使用します。成功すれば1を返し、失敗すれば0を返します。
chdir "perldir";