# z2hkana2.pl
# 内容 : 全角カナを半角カナに変更する
# 前提 : 入力ファイルはshift-jis(from_to関数の引数を変えれば、utf8,eucでも可)
#        スクリプトはshift-jis,utf8,eucどれでも可
#        通常のperlで動作可能
# Copyright (c) 2011 Mitsuo Minagawa, All rights reserved.
# (minagawa@fb3.so-net.ne.jp)
# 使用方法 : c:\>perl z2hkana2.pl
#

open(IN1,"input_sjis.txt");
open(OUT1,">output_sjis.txt");

use Encode 'from_to';
use Encode::JP::H2Z;

while	($line1	=	<IN1>)	{

# CSV形式の $line1 から値を取り出して @in1 に入れる

	chomp($line1);
	$line1	=~	s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
	@in1	=	map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_}
				($line1 =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);

# CSVファイルの3番目の項目が半角カタカナの項目とする。
	$temp	=	$in1[2];

# shift-jisからeucに変換してから
	from_to($temp, 'shiftjis', 'euc-jp');
# 全角文字を半角文字に変換し、
	Encode::JP::H2Z::z2h(\$temp);
# eucからshift-jisに変換する
	from_to($temp, 'euc-jp', 'shiftjis');

	$in1[2]	=	$temp;

	$out1	=	join("\t",@in1);
	print	OUT1	"$out1\n";

}
close(IN1);
close(OUT1);
