「>」モード(書き込み)
次は「>」モード(書き込み)です。このモードの場合は書き込み専用でファイルを開きます。書式は次のどちらかを使用します。
open(ファイルハンドル, "> ファイル名"); open(ファイルハンドル, ">", "ファイル名");
引数を2つ使う場合にはファイル名の前に「> 」を付けます。引数を3つ使う場合には2番目の引数に「>」指定し、3番目の引数にファイル名を指定します。
「>」モードの場合は次の通りです。
・書き込み専用 ・ファイルが存在していた場合、ファイルを開いた時にファイルサイズを0にする ・ファイルが存在してなかった場合、新規にファイルを作成
指定したファイルが存在していた場合はいったんファイルサイズを0にしてから書き込みを行いますので、上書きでの書き込みということになります。また指定したファイルが存在していなかった場合でもエラーとならず、新規にファイルが作成されます。
実際には次のように記述します。
open(DATAFILE, ">", "data.txt") or die("error :$!");
この場合、「data.txt」と言うファイルを書き込み専用で開きます。
サンプルプログラム
では簡単なプログラムで確認して見ます。
use strict; use warnings; use utf8; use open ":utf8"; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; open(DATAFILE, ">", "data7-1.txt") or die("Error:$!"); print DATAFILE "加藤 花子¥n"; print DATAFILE "東京都新宿区¥n"; print DATAFILE "女性"; close(DATAFILE); open(DATAFILE, ">", "data7-2.txt") or die("Error:$!"); print DATAFILE "山崎 一郎¥n"; print DATAFILE "大阪府吹田市¥n"; print DATAFILE "男性"; close(DATAFILE);
上記を「test7-1.pl」の名前で保存します。保存する時の文字コードは「UTF-8」として下さい。
今回はカレントディレクトリに「data7-1.txt」と言うファイルを用意します。ファイル内には次のように記述を行います。ファイルの文字コードはUTF-8(BOM無し)に設定してあります。
コマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。
まず存在していた「data7-1.txt」ファイルを開き書き込みを行っています。ファイルが存在し、既に何かデータが含まれていた場合であっても、いったんファイルの中身をクリアし先頭から書き込みを行います。結果的に「data7-1.txt」ファイルは次のようになります。
次に存在していなかった「data7-2.txt」ファイルを指定してファイルを開いています。「>」モードの場合はファイルが存在しなかった場合には新規に作成しますので、「data7-2.txt」ファイルが作成され書き込みが行われます。結果的に「data7-2.txt」ファイルは次のようになります。
( Written by Tatsuo Ikura )