ファイル入出力
ファイルの入出力にはファイルハンドルを使います。
ファイルハンドルは入出力の対象となるファイルに付けた任意の名前で、Perl予約語と区別する為、英大文字にします。特別なファイルハンドルとして標準入力STDIN、標準出力STDOUTがあります。標準出力はブラウザになります。

open  ファイルハンドルを作成し、指定したファイルに関連付けます。
     出力の場合は > を付けます。追加書込みの場合は >> にします。
     ファイルを新規に作成する場合はファイルハンドルを出力用にオープンします。
      例 open IN,"data.txt";
        open OUT,">data.txt";
        open OUT,">>data.txt";
        open(IN,"data.txt") or die;
         → オープンに失敗すれば、その時点でプログラムの実行を強制終了します。
        open(IN,"data.txt") || &error("オープンできません");
         → オープンに失敗すれば &errorサブルーチンを実行します。

close  ファイルハンドルをクローズします。
      例 close IN; close OUT;

<xx> ファイルハンドルxxから行を読み込みます。
     whileの条件式に使うと読み込んだ行が自動的に$_に格納され、ファイルの終わりまで繰り返します。
      例 $data = <IN>;
        while (<IN>) {print $_;}

read  ファイルハンドルから、指定されたバイト長のデータを読み込みます。
      例 read(STDIN,$in,$ENV{'CONTENT_LENGTH'});

print  ファイルハンドルを指定してファイルに書き込みます。
     ファイルハンドルを省略すると標準出力STDOUTになります。引数を省略すると$_になります。
      例 print OUT $data;  print $data;  print;

unlink  ファイルを削除します。 例 unlink "data.txt";
rename ファイル名を変更します。 例 rename("data.txt","new.txt");
chmod  パーミッションを変更します。 例 chmod(0666,"data.txt");
-e    ファイル又はディレクトリが存在すれば真、存在しなければ偽になります。 例 if (-e "data.txt") { }
■プログラム (sample3.cgi)
open OUT,">data.txt"; print OUT "1234\n"; close OUT;
open IN,"data.txt"; $data = <IN>; close IN;
print "$data<br>";

open OUT,">>data.txt"; print OUT "ABCD\n"; close OUT;
open IN,"data.txt";
while (<IN>) {
chop;
print "$_<br>";
}
close IN;

rename("data.txt","new.txt");
if (-e "new.txt") {print "new.txtが存在します。<br>";} else {print "new.txtが存在しません。<br>";}
unlink "new.txt";
if (-e "new.txt") {print "new.txtが存在します。<br>";} else {print "new.txtが存在しません。<br>";}
open(IN,"new.txt") || &error("new.txtをオープンできません。"); close IN;
###
sub error {print "$_[0]</body></html>\n"; exit;}
■実行結果
1234
1234
ABCD
new.txtが存在します。
new.txtが存在しません。
new.txtをオープンできません。


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