ファイルハンドル

Perl を使ったプログラムの中からファイルに対するやり取りを行う場合、ファイルハンドルと呼ばれるコネクションを利用してやり取りを行います。ここでは Perl におけるファイルハンドルに関する簡単な解説と、標準で用意されているファイルハンドルについて解説します。

(Last modified: )

ファイルハンドルとは

Perl のプログラムでファイルに対して読み書きなどを行う場合、指定したファイルと Perl のプログラムの間でやり取りを行うための通信経路(コネクション)を用意する必要があります。ファイルに対して何かを書き込んだりファイルから読み込んだりする場合はこのコネクションを経由して行われます。

プログラムでは必要になった時にファイルとのコネクションを開いて通信経路を用意し、ファイルに対する操作が終わったらコネクションを閉じます。別のファイルに対して何らかのやり取りが必要にならば、別のコネクションを開いて使用します。

複数のファイルとのやり取りを行う場合には複数のコネクションを使用します。コネクションを区別するためにコネクションに対して付ける名前をファイルハンドルと呼びます。書き込みや読み込みを行う場合はファイルハンドルを指定することで、どのファイルに対して操作を行うのかを指示することができます。

ファイルハンドル名の付け方

ファイルハンドル名は次の規則に従っていれば任意の名前を設定することができます。

変数名にはアルファベット・数字・アンダーバー("_")を使うことができます
(例) name, old20, _hokan

先頭の文字に数字は利用できません
(例) 10kago は不可

大文字と小文字は区別します。
(例) old と Old は別の変数名となります

これは変数名を付ける時の規則と同じです(ただし $% などの接頭語のようなものはありません)。小文字でも大文字でも規則上は問題ありませんが、慣習としてファイルハンドルは全て大文字で名前を付けることになっているようです。

例えば次のようにファイルハンドル名を付けることができます。

DATAFILE
LOG

標準で用意されているファイルハンドル

プログラムの中で任意のファイルとの間で使用するファイルハンドルとは別に、 Perl で標準で用意されているファイルハンドルがあります。

STDIN   標準入力。キーボードからの入力など。
STDOUT  標準出力。画面への出力など。
STDERR  標準エラー。エラーとしての出力。

これらのファイルハンドルは標準で用意されており、コネクションは開かれた状態です。その為、特に何もしなくてもファイルハンドルを指定してコネクションを利用することができます。

ファイルハンドル STDIN は標準入力と呼ばれるものでファイルの代わりにキーボードやパイプ/リダイレクトなどからデータを読み込む場合に使用されます。

ファイルハンドル STDOUT は標準出力と呼ばれるものでファイルの代わりに画面やパイプ/リダイレクトなどに対してデータを出力する場合に使用されます。

ファイルハンドル STDERR は標準エラーと呼ばれるもので標準出力と同じく画面やパイプ/リダイレクトなどに対してデータを出力する場合に使用されます。標準出力との違いは、エラーが発生した時に使用されるという点です。

このようにキーボードからの入力や画面への出力などもファイルと同じようにコネクションを開き、対応するファイルハンドルに対して操作を行うことでファイルに対する読み書きと同じように処理することができます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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