ファイルにテキストデータを書き込む

ファイルをオープンすると、ファイルからテキストデータを読み込むだけでなく、ファイルに対してテキストデータを書き込むこともできます。ここでは Perl のプログラムでファイルからテキストデータを書き込む方法について解説します。

(Last modified: )

テキストデータを書き込む

画面に文字列などを出力する場合には 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, ">> data.txt") or die("Error:$!");

print DATAFILE "愛知県\n";

close(DATAFILE);

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

あらかじめ sample.pl と同じディレクトリに data.txt というファイルを作成しておきました(文字コードは UTF-8 です)。ファイルには次のようなテキストデータを入力してあります。

ファイルからテキストデータを読み込む(1)

次のように実行結果が表示されます。

ファイルにテキストデータを書き込む(2)

プログラムを実行後、あらためて data.txt ファイルの中身を確認してみると、テキストデータが追加で書き込まれているのが確認できます。

ファイルからテキストデータを読み込む(3)

-- --

Perl のプログラムでファイルからテキストデータを書き込む方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。