6.1 ファイルの読み書き

ファイルを読み書きするには、ファイルにハンドルを割り当てる必要があります。
ファイルハンドルは任意の名前を付けることができますが、唯一の規則として、すべての文字を大文字で記入しなければなりません。
ファイルにハンドルを割り当てることをファイルを開くと言います。
ファイルを開くにはopen関数を使用します。

モード 意味
読込み open(IN,"<file_name") file_nameを読込み用で開く    ファイル名の先頭に<を付ける
書込み open(OUT,">file_name") file_nameを書込み用で開く    ファイル名の先頭に>を付ける
読み書き両用 open(FILE,"+>file_name")
open(FILE,"+<file_name")
file_nameを読み書き両用で開く    ファイル名の先頭に+>または+<を付ける
左欄の両ステートメントは同じ意味

<ファイルを閉じる>
ファイルを閉じるにはcloseを使います。
しかし、Perlはプログラムの終了時にファイルを自動的にcloseします。
また、すでに開かれているファイルをopenしようとした場合でも、自動的にcloseしてからopenします。
したがって、closeはほとんどの場合行う必要はありませんが、高度なプログラムを作る場合、ファイルをcloseしなければならない事があります。
プログラムの読み易さから言っても、closeをする習慣を身に付けておいた方がいいでしょう。

<エラー処理>
ファイルへのアクセスでは、エラー処理は欠かせません。
この項ではエラー処理については触れませんが、実際のプログラミングではエラー処理は必須の処理です。
この話題は「Wevプログラミング」で解説します。

行番号 CGIプログラム 解   説
1 #!/usr/local/bin/perl5 1行目は必ずPerlプログラムのある場所を記入
2 #ファイルの使い方 #の右側の文字列はコメント
3 print "Content-type: text/html\n\n"; print文でブラウザへタグ文字列を送っています
4 print "<HTML>\n";
5 print "<HEAD>\n";
6 print "<TITLE>ファイル読み書き</TITLE>\n";
7 print "</HEAD>\n";
8 print "<BODY>\n";
9 $str1="\n"; $str1の初期設定
10 $str2="\n"; $str2の初期設定
11 $str3="\n"; $str3の初期設定
12 open(OUT,">file.txt"); ファイル名file.txtを書込みオープン
13 print OUT $str1; $str1をfile.txtへ書込む
14 print OUT $str2; $str2をfile.txtへ書込む
15 print OUT $str3; $str3をfile.txtへ書込む
16 close(OUT); ハンドルOUTをクローズ
17 open(IN,"<file.txt"); 今作ったfile.txtを読み込みオープン
18 while(<IN>){ ファイルの読込みはハンドル名を<>で囲む
この場合$_に読み込まれる
19     s/ /&nbsp;/g; スペースをHTML形式に変換
20     s/</&lt;/g; <をHTML形式に変換
21     s/>/&gt;/g; >をHTML形式に変換
22     s/\"/&quot;/g; "をHTML形式に変換
23     print "$_<BR>";
24 }
25 close(IN); ハンドルINをクローズ
26 print "</BODY>\n";
27 print "</HTML>\n";

戻る 次へ