ファイルハンドル
Perlのプログラムでファイルに対して何らかの操作を行う場合、指定したファイルとPerlのプログラムの間でやり取りを行うための通信経路(コネクション)を用意する必要があります。ファイルに対して何かを書き込んだりファイルから読み込んだりする場合はこのコネクションを経由して行われます。
プログラムでは必要になった時にファイルとのコネクションを開いて通信経路を用意し、ファイルに対する操作が終わったらコネクションを閉じます。別のファイルに対して何らかのやり取りが必要にならば、別のコネクションを開いて使用します。
複数のファイルとのやり取りを行う場合には複数のコネクションを使用します。コネクションを区別するためにコネクションに対して付ける名前をファイルハンドルと呼びます。書き込みや読み込みを行う場合はファイルハンドルを指定することで、どのファイルに対して操作を行うのかを指示することが出来ます。
ファイルハンドル名の付け方
ファイルハンドル名は次の規則に従っていれば任意の名前を設定することができます。
変数名にはアルファベット・数字・アンダーバー("_")を使うことが出来ます (例) name, old20, _hokan 先頭の文字に数字は利用できません (例) 10kago は不可 大文字と小文字は区別します。 (例) old と Old は別の変数名となります
これは変数名を付ける時の規則と同じです(ただし「$」や「%」などの接頭語のようなものはありません)。小文字でも大文字でも規則上は問題ありませんが、慣習としてファイルハンドルは全て大文字で名前を付けることになっているようです。例えば次のようになります。
DATAFILE LOG
標準で用意されているファイルハンドル
プログラムの中で任意のファイルとの間で使用するファイルハンドルとは別に、標準で用意されているファイルハンドルがあります。
STDIN 標準入力。キーボードからの入力など。 STDOUT 標準出力。画面への出力など。 STDERR 標準エラー。エラーとしての出力。
これらのファイルハンドルは標準で用意されており、コネクションは開かれた状態です。その為、特に何もしなくてもファイルハンドルを指定してコネクションを利用することが出来ます。
ファイルハンドル「STDIN」は標準入力と呼ばれるものでファイルの代わりにキーボードやパイプ/リダイレクトなどからデータを読み込む場合に使用されます。
ファイルハンドル「STDOUT」は標準出力と呼ばれるものでファイルの代わりに画面やパイプ/リダイレクトなどに対してデータを出力する場合に使用されます。
ファイルハンドル「STDERR」は標準エラーと呼ばれるもので標準出力と同じく画面やパイプ/リダイレクトなどに対してデータを出力する場合に使用されます。標準出力との違いは、エラーが発生した時に使用されるという点です。
このようにキーボードからの入力や画面への出力などもファイルと同じようにコネクションを開き、対応するファイルハンドルに対して操作を行うことでファイルに対する読み書きと同じように処理することが出来ます。
( Written by Tatsuo Ikura )