テキストデータを書き込む
今度はファイルへデータを書き込む方法を確認します。
今までのサンプルでも画面に文字列などを出力する場合には「print」関数を使用していました。
print "書き出したいデータ";
「print」関数は実際には次のような構文となっています。
print ファイルハンドル リスト;
指定されたファイルハンドルに対して、指定されたリストの内容を書き出します。ファイルハンドルは省略可能であり、省略された場合は標準出力である「STDOUT」が指定されたものと見なされます。よって今までは本来次のように記述する代わりに「STDOUT」を省略して記述していました。
print STDOUT "書き出したいデータ";
標準出力の代わりに任意のファイルを開く際に指定したファイルハンドルに変更することで、ファイルに対して指定したデータを書き込むことが出来ます。
例えば次のように記述します。
open(DATAFILE, ">> data.txt") or die("error :$!"); print DATAFILE "書き出したいデータ";
先ほどのサンプルと異なる点は、データを書き出したいファイルを開きファイルハンドルを割り当て、そしてそのファイルハンドルに対してデータを書き出している点だけです。(なお「open」関数のファイル名の前に「>> 」が付いています。これはファイルを書き込み専用(追加書き込み)で開く場合に記述する記号です。詳しくは後のページで解説します)。
この場合は既にファイルに含まれている内容を変更せずに、ファイルの最後にデータを追加します。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; use open ":utf8"; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; open(DATAFILE, ">> data5-1.txt") or die("Error:$!"); print DATAFILE "大阪¥n"; print DATAFILE "Osaka¥n";
上記を「test5-1.pl」の名前で保存します。保存する時の文字コードは「UTF-8」として下さい。
今回はカレントディレクトリに「data5-1.txt」と言うファイルを用意します。ファイル内には次のように記述を行います(ファイルの文字コードはUTF-8(BOM無し)に設定してあります)。
コマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
今回のプログラムでは指定したファイルに2つの行を追加しています。プログラム実行後に改めて「data5-1.txt」ファイルを確認してみます。
ファイルの中に2行が追加されていることが確認できます。
( Written by Tatsuo Ikura )