Produced by career-info
#perl(ハッシュパール)|サイトマップ
Perl初心者、Perl入門者向けに、Perlの基礎/基本を中心に、サンプルを例に解りやすく丁寧に解説しています。

13.ファイルの入出力

この章では、Perlにおけるファイルの入力、出力について説明します。


13.1 ファイルのオープン

Perlにおけるファイルのオープンは、open関数を使用しファイルのオープンを行います。open関数には様々なオープンモードがありますが、代表的なオープンモードを以下に示します。

(1) 読み込みモードでのファイルオープン

■open関数(読み込みモード)

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



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


Perlでファイルを読み込む場合は、open関数を使用し「読み込みモード」でファイルをオープンします。
・ファイルハンドルは、PerlがPerl内でファイル処理をする際にファイルを識別する名前となり、通常は英大文字で宣言するのが一般的となります。
・ファイル名は、実際に読み込む物理的なファイル名となります。
・読み込みモードの場合、ファイル名の前に<を付けますが、<を省略しても読み込みモードとしてファイルがオープンされます。
・読み込みモードの場合、ファイル名で指定したファイルが存在しない場合は、ファイルの読み込み時にエラーとなるため、ファイルオープン時にエラーのハンドリングを行う必要があります。

■open関数(読み込みモード)の例

open (IN, "test.dat");



open (IN, "<test.dat");


※上記の例ではファイル名に「test.dat」を指定していますが、この場合はopen関数を実行したPerlソースの格納場所にファイルが存在する必要があります。そのため、ファイルがPerlソースとは別の場所にある場合は、「D:/test/test.dat」のようにフルパスでファイル名を指定する必要があります。


(2) 書き込みモードでのファイルオープン

■open関数(書き込みモード)

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


Perlでファイルにデータを書き込む場合は、open関数を使用し「書き込みモード」でファイルをオープンします。
・ファイルハンドルは、PerlがPerl内でファイル処理をする際にファイルを識別する名前となり、通常は英大文字で宣言するのが一般的となります。
・ファイル名は、実際に読み込む物理的なファイル名となります。
・書き込みモードの場合、ファイル名の前に>を付けます。
・書き込みモードの場合、ファイル名で指定したファイルが存在しない場合は、新たにファイルを作成します。ファイルが既に存在する場合は、既存のファイルデータは全て消去されます。

■open関数(書き込みモード)の例

open (OUT, ">test.dat");


※上記の例ではファイル名に「test.dat」を指定していますが、この場合はopen関数を実行したPerlソースの格納場所にファイルが作成されます。そのため、ファイルをPerlソースとは別の場所に作成する場合は、「D:/test/test.dat」のようにフルパスでファイル名を指定する必要があります。


(3) 追加書き込みモードでのファイルオープン

■open関数(追加書き込みモード)

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


Perlでファイルにデータを追加書き込みする場合は、open関数を使用し「追加書き込みモード」でファイルをオープンします。
・ファイルハンドルは、PerlがPerl内でファイル処理をする際にファイルを識別する名前となり、通常は英大文字で宣言するのが一般的となります。
・ファイル名は、実際に読み込む物理的なファイル名となります。
・追加書き込みモードの場合、ファイル名の前に>>を付けます。
・追加書き込みモードの場合、ファイル名で指定したファイルが存在しない場合は、新たにファイルを作成します。ファイルが既に存在する場合は、既存のファイルデータは消去されず、ファイル出力時に、末尾にデータが追加出力されます。

■open関数(追加書き込みモード)の例

open (ADD, ">>test.dat");


※上記の例ではファイル名に「test.dat」を指定していますが、この場合はopen関数を実行したPerlソースの格納場所にファイルが存在する必要があります。そのため、ファイルがPerlソースとは別の場所にある場合は、「D:/test/test.dat」のようにフルパスでファイル名を指定する必要があります。


13.2 ファイルのクローズ

(1) Perlにおけるファイルのクローズは、close関数を使用しファイルのクローズを行います。

■close関数

close (ファイルハンドル);


※ファイルのクローズはファイルのオープンモードとは関係なく、上記にてクローズすることができます。

■close関数の例

close (IN);



13.3 ファイルの読み込み

Perlにおけるファイルの読み込みについて以下に説明します。
※以降のファイルの読み込みの説明における「test.dat」には下記のサンプルデータ(4件)が格納されていることを前提に説明します。

■test.dat
11埼玉<改行>
12千葉<改行>
13東京<改行>
14神奈川<改行>

(1) Perlでファイルを全件読み込む場合は、通常はwhile文の繰り返しを使用しファイルの読み込みを行います。

■ファイルの全件読み込み例1

while (<ファイルハンドル>){
   ファイルを1件毎に読み込んだ処理
   ・
   ・
}


※上記例1の場合、読み込んだファイルデータは、Perl特有の特殊変数である、「$_」という変数に格納されます。

■ファイルの全件読み込みの例1

#!/usr/bin/perl

open (IN, "test.dat");

while (<IN>){
print "$_";
}

close (IN);

exit;


■ファイルの全件読み込みの例1の実行結果

D:¥test>perl sample.pl
11埼玉
12千葉
13東京
14神奈川



■ファイルの全件読み込み例2

while ($変数 = <ファイルハンドル>){
   ファイルを1件毎に読み込んだ処理
   ・
   ・
}


※上記例2の場合、読み込んだファイルデータは、Perl特有の特殊変数ではなく、自分で定義した変数に格納されます。

■ファイルの全件読み込みの例2

#!/usr/bin/perl

open (IN, "test.dat");

while ($str = <IN>){
print "$str";
}

close (IN);

exit;


■ファイルの全件読み込みの例2の実行結果

D:¥test>perl sample.pl
11埼玉
12千葉
13東京
14神奈川



(2) Perlでファイルを任意のタイミングで1件ずつ読み込む場合は、以下のようにファイルの読み込みを行います。
■ファイルを1件ずつ読み込む

$変数 = <ファイルハンドル>;


■ファイルを1件ずつ読み込む例

#!/usr/bin/perl

open (IN, "test.dat");

$str = <IN>;
print "$str";

$str = <IN>;
print "$str";

close (IN);

exit;


■ファイルを1件ずつ読み込む例の実行結果

D:¥test>perl sample.pl
11埼玉
12千葉



13.4 ファイルへの書き込み

Perlにおけるファイルへの書き込みは、print関数を使用しファイルの出力を行います。

■print関数

print ファイルハンドル "出力するデータ";


※上記の「出力するデータ」に出力したいデータを指定します。

■print関数の例

#!/usr/bin/perl

open (OUT, ">test.dat");

$str = "13東京";

print OUT "$str\n";

close (OUT);

exit;


※上記の例では、$strという変数に、出力するデータ「13東京」を格納し、print関数にて改行(¥n)を付与して出力しています。

■print関数の例の実行結果

D:¥test>perl sample.pl

D:¥test>more test.dat
13東京


※コマンドプロンプトよりmoreコマンドで出力した「test.dat」を見てみると、「13東京」が出力されています。
[関連記事]
 


■IT関連記事
■ご意見・ご感想について

#perl(ハッシュパール)|HOMEへHOME #perl(ハッシュパール)|ページ先頭へページ先頭へ
当サイト(#perl)では、Perl初心者、Perl入門者向けに、Perlの基礎/基本を中心に、サンプルを例に解りやすく丁寧に解説しています。
当サイトを通して、Perlの楽しさ、Perlの素晴らしさが伝われば幸いです。
キャリアインフォ
career.nについてリンクについて
ご利用規約プライバシーポリシーお問い合わせ