「>>」モード:ファイルの最後に追加で書き込む

Perl で open 関数を使ってファイルを開く際に、「>>」モードを指定すると書き込み専用でファイルを開くことができます。対象のファイルが既に存在していた場合は既存の内容は変更せずに追加でファイルへ書き込みを行います。ここでは Perl のプログラムの中で「>>」モードを使って書き込み専用でファイルを開く方法について解説します。

(Last modified: )

「>>」モードでファイルを開く

モードとして >> を指定した場合、書き込み専用でファイルを開きます。

open(ファイルハンドル, ">> ファイル名");
open(ファイルハンドル, ">>", "ファイル名");

引数を 2 つ使う場合にはファイル名の前に >> + 空白 を付けます。引数を 3 つ使う場合には 2 番目の引数に >> を指定し、 3 番目の引数にファイル名を指定します。

>> モードの場合は次のように動作します。

・書き込み専用
・ファイルが存在していた場合、ファイルを開いた時にファイルの内容を変更しない
・ファイルが存在してなかった場合、新規にファイルを作成

指定したファイルが存在していた場合はファイルの内容を変更せずにファイルの最後に書き込みを行いますので、追加書き込みということになります。また指定したファイルが存在していなかった場合でもエラーとならず、新規にファイルが作成されます。

実際には次のように記述します。

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, ">>", "data.txt") or die("Error:$!");

print DATAFILE "西田\n";
print DATAFILE "長谷部\n";
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

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