#入力,出力ファイルをそれぞれ指定し,データを特定のエンコードで読み込み特定のエンコードで出力するスクリプト
use encoding “shiftjis”;
binmode STDERR, “:encoding(shiftjis)”;
use Encode ‘decode’, ‘encode’; # use Encode qw/encode decode/; とqw表記することも可能。引用符やカンマを省略できる。
$inputtext = ‘sjis_in.txt’; # 入力元のテキストは Shift JIS
$outputtext = ‘sjis_out.txt’; # 出力先のテキストは Shift JIS
open (IN, ‘< ', $inputtext); # 入力元ファイルを読み込み専用としてオープン open (OUT, '>‘, $outputtext); # 出力先ファイルを書き込み専用としてオープン
$i = 0; # カウンター
while (
$i++; # カウンターを1つ増
$line = decode(‘shiftjis’, $_); # ファイルからの入力は Encode::decode 関数で個別にエンコードを指定する。ここでは shiftjis を指定しているが,入力ファイルのエンコードにあわせ,euc-jp, utf8 なども指定可能。
$line = encode(‘shiftjis’, $i . “\t” . $line); # 出力するデータを指定し, Encode::encode 関数により Shift JIS に変換する。euc-jp, utf8 なども指定可能。
print OUT $line; # 出力用ファイルハンドル OUT に変換結果を書き込む
}
close (IN); # 入力元ファイルハンドルを閉じる
close (OUT); # 出力先ファイルハンドルを閉じる