Perlスクリプトのexe化④

まず、スクリプトUTF-8形式で保存し、

 

use strict;
use Text::CSV_XS;
use utf8;
use Encode 'encode';

 

を用いた。macOSWindowsの判別は

 

if($^O eq "MSWin32"){

    Windowsの場合;

}else{

    それ以外の場合;

}

 

で、cp932形式のファイルの読み込みは

 

open(DATA, "<:encoding(cp932)", $data_file1) || die "can't open $data_file1: $!";

 

で、日本語を含むCSVファイルなので

 

my $csv = Text::CSV_XS->new({binary => 1});

 

とbinary => 1を指定し、

 

binmode STDOUT, ":utf8";

 

でprintで出力するものがUTF8となる。

 

もっと気を遣うのならば読み込んだファイルが本当にcp932のCSVなのか等チェックするのだろうけれど、そこまではやらなかった。