さて、Perl プログラミング基礎編も、そろそろ後半に入ってきました。今日はファイルを開いて、変更し、また保存する方法を覚えましょう。この事をファイルの「入出力」と呼びます。

ファイルの入出力は、例えば CSV ファイルを読んで統計を取ったり、ホームページの内容を一括で変更したりする場合に使います。省略して I/O (アイオー、Input/Output の略) と言う事もあります。

ファイルの入力

では早速ですが、まずはファイルを入力、つまりファイルを読み込んで、それを画面に出力してみましょう。

準備として、練習用のプログラムと入力・出力ファルを保存するためのディレクトリ (フォルダ) を作成して下さい。

ディレクトリを作ったら、「メモ帳」か「テキストエディット」でテスト用の入力ファイルも作成して下さい。中身は何でも良いのですが、日本語(全角文字)が含まれるようにして下さい。

私は以下のような中身でファイルを作りました。このファイルの名前は「text01.txt」にして下さい。
サンプル
ianadam aweaman uraedoken awiahagaw

ファイルの入力プログラム

では早速入出力用のサンプルプログラムです。以下のコードを打ち込んで、先ほど作成したディレクトリに保存して下さい。
#Perl ファイル入力を覚えるためのプログラム

use strict;
use warnings;
use utf8;
binmode STDOUT, 'encoding(utf8)'; #Windows の場合は utf8 -> cp932

my $fh;
open ($fh, '<', 'text01.txt')
or die "ERROR: open: text01.txt: $!
"
;

while(<$fh>){
print $_;
}

close $fh;
保存したら早速実行しますが、その前に念のため、ダウンロードしたファイルが同じディレクトリにあるかを確認しておきます。

同じディレクトリにファイルがあるかどうかは、ディレクトリに移動してから「ls (エンター)」と打ち込むと表示されます。Windows の場合は「dir (エンター)」と打ち込んで下さい。

以下のように、2つのファイル名が表示されればOKです。
% ls (Windows の場合は dir)
file-io.pl  text01.txt
ファイルがちゃんとある事を確認したら、プログラムを実行します。実行は以下のように打ち込むのでしたね。
% perl file-io.pl (エンター)
さて、どうですか?

文字化けしましたね? しましたよね? お使いの環境によって文字化けの見え方は色々なのですが、以下のように、記号がずらずらと表示されたのではないかと思います。
??T??????v????
"x{008c}" does not map to cp932 ...(色々)
これは、Perl が「文字コード」を厳密に管理しているために起こります。

>次は:文字コードについておさらい