ファイルの入出力は、例えば 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: $!\n" ; 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 が「文字コード」を厳密に管理しているために起こります。
>次は:文字コードについておさらい