[もくじへ|トップページへ|前ページへ|次ページへ]
に更新
8.ファイル操作
プログラミングで一番面白いのが、ファイル操作だと思います。ここでいうフ
ァイル操作とは、プログラムのことではなく、データの保存と読み込みです。
『りょうかんのプログラミング大学』では、スクリプト学科の中でJavaScript
とVBScript講座を開いていますが、両言語ともこのファイルの扱いができない
のです。クッキーでちょっと無理すれば、できないこともないのですが、クッ
キーは不安定で大量のデータ保存には不向きです。その点、Perlはファイル操
作が簡単で、確実に書き込みと読み込みができます。
Perlは、シーケンシャルファイル(テープのように頭から順に書き込み読み込
みするファイル)とランダムファイル(CDのように途中からでも書き込み読
み込みできるファイル)ができますが、ここではシーケンシャルファイルにつ
いて説明します。
- 書き込み(保存)
open ( ハンドル, ">ファイル名"
);
print ハンドル 変数;
:
close (ハンドル);
ハンドルはファイル名のニックネームと考えていいでしょう。ファイル名
の代わりの呼び名です。上書きモードは、ファイル名の頭に「>」、追加モ
ードは「>>」をつけます。
上書きモード
open ( ABC,">abc.txt" );
print ABC $line;
close (ABC);
ファイルを上書きモードでオープンし、$lineを書き込みます。
open ( ABC,">abc.txt" );
print ABC @abcdata;
close (ABC);
ファイルを上書きモードでオープンし、配列@abcdataを一度に書き込みま
す。
追加モード
open ( ABC,">>abc.txt" );
print ABC 'test';
close (ABC);
ファイルを追加モードでオープンし、最後に1行追加します。
- 読み込み
open ( ハンドル, "<ファイル名"
);
変数 = <ハンドル>;
:
close (ハンドル);
読み込みモードは、ファイル名の頭に「<」(省略可)をつけます。
open ( ABC,"<abc.txt" );
$line = <ABC>;
print "$line\n";
close (ABC);
ファイルを読み込みモードでオープンし、最初の1行を$lineに代入し、出
力します。
open ( ABC,"<abc.txt" );
while(<ABC>) {
print;
}
close (ABC);
ファイルを読み込みモードでオープンし、それぞれの行を特殊変数$_に代入
し、出力します。このように、変数を省略したときは特殊変数$_が使われま
す。
open ( ABC,"<abc.txt" );
@abcdata = <ABC>;
close (ABC);
ファイルを読み込みモードでオープンし、一度に配列変数に代入します。
- 書き込み読み込み両用モード
open ( ABC,"+<abc.txt" );
書き込み読み込みのどちらもできますが、ファイルがないとエラーになり
ます。
open ( ABC,"+>abc.txt" );
ファイルを作成してから、書き込み読み込みのどちらもできます。
open ( ABC,"+>>abc.txt" );
ファイルがなければ作成してから、すでに存在すればそのまま書き込み
読み込みのどちらもできます。
以上の説明を、ひとつのプログラムにまとめます。
ファイル操作のプログラム
#!/usr/local/bin/perl
print "Content-type:
text/html\n\n";
print "<HTML>\n";
print "<TITLE>ファイル操作</TITLE>\n";
print "<BODY>\n";
#
#--------------------------------------------------
#
# 1行分のデータ
#
$line = 'uwagaki1';
#
# 書きこみ
#
open (ABC,">abc.txt");
print ABC "$line\n";
close (ABC);
#
# 読み込み
#
open (IN,"<abc.txt");
$a=<IN>;
print "$a<br>\n";
close (IN);
print "<br>\n";
#--------------------------------------------------
#
# 配列データ
#
@abcdata =
('Tokyo','Osaka','Kyoto','Kagoshima','Aira');
#
# 配列のデータを書き込み
#
open ( OUT,">abc.txt" );
print OUT "@abcdata\n";
close (OUT);
#
#
配列データを直接書き込むと、各要素はスペースで
# 区切られます。split(/区切り文字(半角文字は「\」
# をつける)/,分解する変数)で分解しながら配列@aに
# 代入します。
#
open ( IN,"<abc.txt" );
@a = split(/\ /,<IN>);
close (IN);
#
# @aの要素を特殊変数$_に1個づつ代入しながら表示
#
foreach (@a) {
print "$_<br>\n";
}
print "<br>\n";
#--------------------------------------------------
#
# 1行目のデータ書き込み(上書きモード)
#
$line1 = 'line1';
open (ABC,">abc.txt");
print ABC "$line1\n";
close (ABC);
#
# 2行目のデータ追加書き込み
#
$line2 = 'line2';
open ( ABC,">>abc.txt" );
print ABC "$line2\n";
close (ABC);
#
# abc.txt を読み込み表示
#
open ( ABC, "<abc.txt" );
@a = <ABC>;
close (ABC);
foreach (@a){
print "$_<br>\n";
}
print "<br>\n";
#--------------------------------------------------
#
print "</BODY>\n";
print "</HTML>\n";
|
このプログラムに適当な名前をつけて、テキストモードでアップロードします。
パーミッションは755に設定してください。
テスト実行
file.cgi
をクリックしてください。
うまく動きましたか?
動かないときは、サポート掲示板へどうぞ。

[もくじへ|トップページへ|前ページへ|次ページへ]
|