while(<>) { s/[\r\n]//g; $len = length( $_ ); $i = 0; while ( $i < $len ) { if ( &isascii( substr( $_, $i, 1 ) ) ) { printf( "%s", substr( $_, $i, 1 ) ) ; $i++; next; } else { if ( &ishankana( substr( $_, $i, 1 ) ) ) { $i = &han2zen( substr( $_, $i, 2 ), $i ); } else { printf( "%s", substr( $_, $i, 2 ) ) ; $i = $i + 2; } } } printf( "\n" ); } sub isascii { if ( $_[0] le "~" ) { return(1); } return(0); } sub ishankana { if ( ( $_[0] ge "。" ) && ( $_[0] le "゚" ) ) { return(1); } return(0); } sub han2zen { local($string, $next_index) = @_; # ガ行 if ( $string eq "ガ" ) { printf( "ガ" ); return( $next_index + 2 ); } if ( $string eq "ギ" ) { printf( "ギ" ); return( $next_index + 2 ); } if ( $string eq "グ" ) { printf( "グ" ); return( $next_index + 2 ); } if ( $string eq "ゲ" ) { printf( "ゲ" ); return( $next_index + 2 ); } if ( $string eq "ゴ" ) { printf( "ゴ" ); return( $next_index + 2 ); } # ザ行 if ( $string eq "ザ" ) { printf( "ザ" ); return( $next_index + 2 ); } if ( $string eq "ジ" ) { printf( "ジ" ); return( $next_index + 2 ); } if ( $string eq "ズ" ) { printf( "ズ" ); return( $next_index + 2 ); } if ( $string eq "ゼ" ) { printf( "ゼ" ); return( $next_index + 2 ); } if ( $string eq "ゾ" ) { printf( "ゾ" ); return( $next_index + 2 ); } # ダ行 if ( $string eq "ダ" ) { printf( "ダ" ); return( $next_index + 2 ); } if ( $string eq "ヂ" ) { printf( "ヂ" ); return( $next_index + 2 ); } if ( $string eq "ヅ" ) { printf( "ヅ" ); return( $next_index + 2 ); } if ( $string eq "デ" ) { printf( "デ" ); return( $next_index + 2 ); } if ( $string eq "ド" ) { printf( "ド" ); return( $next_index + 2 ); } # バ行 if ( $string eq "バ" ) { printf( "バ" ); return( $next_index + 2 ); } if ( $string eq "ビ" ) { printf( "ビ" ); return( $next_index + 2 ); } if ( $string eq "ブ" ) { printf( "ブ" ); return( $next_index + 2 ); } if ( $string eq "ベ" ) { printf( "ベ" ); return( $next_index + 2 ); } if ( $string eq "ボ" ) { printf( "ボ" ); return( $next_index + 2 ); } # パ行 if ( $string eq "パ" ) { printf( "パ" ); return( $next_index + 2 ); } if ( $string eq "ピ" ) { printf( "ピ" ); return( $next_index + 2 ); } if ( $string eq "プ" ) { printf( "プ" ); return( $next_index + 2 ); } if ( $string eq "ペ" ) { printf( "ぺ" ); return( $next_index + 2 ); } if ( $string eq "ポ" ) { printf( "ポ" ); return( $next_index + 2 ); } # ヴ if ( $string eq "ヴ" ) { printf( "ヴ" ); return( $next_index + 2 ); } $string = substr( $string, 0, 1 ); # ア行(小文字) if ( $string eq "ァ" ) { printf( "ァ" ); return( $next_index + 1 ); } if ( $string eq "ィ" ) { printf( "ィ" ); return( $next_index + 1 ); } if ( $string eq "ゥ" ) { printf( "ゥ" ); return( $next_index + 1 ); } if ( $string eq "ェ" ) { printf( "ェ" ); return( $next_index + 1 ); } if ( $string eq "ォ" ) { printf( "ォ" ); return( $next_index + 1 ); } # ア行(大文字) if ( $string eq "ア" ) { printf( "ア" ); return( $next_index + 1 ); } if ( $string eq "イ" ) { printf( "イ" ); return( $next_index + 1 ); } if ( $string eq "ウ" ) { printf( "ウ" ); return( $next_index + 1 ); } if ( $string eq "エ" ) { printf( "エ" ); return( $next_index + 1 ); } if ( $string eq "オ" ) { printf( "オ" ); return( $next_index + 1 ); } # カ行 if ( $string eq "カ" ) { printf( "カ" ); return( $next_index + 1 ); } if ( $string eq "キ" ) { printf( "キ" ); return( $next_index + 1 ); } if ( $string eq "ク" ) { printf( "ク" ); return( $next_index + 1 ); } if ( $string eq "ケ" ) { printf( "ケ" ); return( $next_index + 1 ); } if ( $string eq "コ" ) { printf( "コ" ); return( $next_index + 1 ); } # サ行 if ( $string eq "サ" ) { printf( "サ" ); return( $next_index + 1 ); } if ( $string eq "シ" ) { printf( "シ" ); return( $next_index + 1 ); } if ( $string eq "ス" ) { printf( "ス" ); return( $next_index + 1 ); } if ( $string eq "セ" ) { printf( "セ" ); return( $next_index + 1 ); } if ( $string eq "ソ" ) { printf( "ソ\" ); return( $next_index + 1 ); } # タ行 if ( $string eq "タ" ) { printf( "タ" ); return( $next_index + 1 ); } if ( $string eq "チ" ) { printf( "チ" ); return( $next_index + 1 ); } if ( $string eq "ツ" ) { printf( "ツ" ); return( $next_index + 1 ); } if ( $string eq "テ" ) { printf( "テ" ); return( $next_index + 1 ); } if ( $string eq "ト" ) { printf( "ト" ); return( $next_index + 1 ); } # ナ行 if ( $string eq "ナ" ) { printf( "ナ" ); return( $next_index + 1 ); } if ( $string eq "ニ" ) { printf( "ニ" ); return( $next_index + 1 ); } if ( $string eq "ヌ" ) { printf( "ヌ" ); return( $next_index + 1 ); } if ( $string eq "ネ" ) { printf( "ネ" ); return( $next_index + 1 ); } if ( $string eq "ノ" ) { printf( "ノ" ); return( $next_index + 1 ); } # ハ行 if ( $string eq "ハ" ) { printf( "ハ" ); return( $next_index + 1 ); } if ( $string eq "ヒ" ) { printf( "ヒ" ); return( $next_index + 1 ); } if ( $string eq "フ" ) { printf( "フ" ); return( $next_index + 1 ); } if ( $string eq "ヘ" ) { printf( "ヘ" ); return( $next_index + 1 ); } if ( $string eq "ホ" ) { printf( "ホ" ); return( $next_index + 1 ); } # マ行 if ( $string eq "マ" ) { printf( "マ" ); return( $next_index + 1 ); } if ( $string eq "ミ" ) { printf( "ミ" ); return( $next_index + 1 ); } if ( $string eq "ム" ) { printf( "ム" ); return( $next_index + 1 ); } if ( $string eq "メ" ) { printf( "メ" ); return( $next_index + 1 ); } if ( $string eq "モ" ) { printf( "モ" ); return( $next_index + 1 ); } # ヤ行(小文字) if ( $string eq "ャ" ) { printf( "ャ" ); return( $next_index + 1 ); } if ( $string eq "ュ" ) { printf( "ュ" ); return( $next_index + 1 ); } if ( $string eq "ョ" ) { printf( "ョ" ); return( $next_index + 1 ); } # ヤ行(大文字) if ( $string eq "ヤ" ) { printf( "ヤ" ); return( $next_index + 1 ); } if ( $string eq "ユ" ) { printf( "ユ" ); return( $next_index + 1 ); } if ( $string eq "ヨ" ) { printf( "ヨ" ); return( $next_index + 1 ); } # ラ行 if ( $string eq "ラ" ) { printf( "ラ" ); return( $next_index + 1 ); } if ( $string eq "リ" ) { printf( "リ" ); return( $next_index + 1 ); } if ( $string eq "ル" ) { printf( "ル" ); return( $next_index + 1 ); } if ( $string eq "レ" ) { printf( "レ" ); return( $next_index + 1 ); } if ( $string eq "ロ" ) { printf( "ロ" ); return( $next_index + 1 ); } # ワ行 if ( $string eq "ワ" ) { printf( "ワ" ); return( $next_index + 1 ); } if ( $string eq "ヲ" ) { printf( "ヲ" ); return( $next_index + 1 ); } # ン if ( $string eq "ン" ) { printf( "ン" ); return( $next_index + 1 ); } # 句点 if ( $string eq "。" ) { printf( "。" ); return( $next_index + 1 ); } # 読点 if ( $string eq "、" ) { printf( "、" ); return( $next_index + 1 ); } # かぎ括弧 if ( $string eq "「" ) { printf( "「" ); return( $next_index + 1 ); } if ( $string eq "」" ) { printf( "」" ); return( $next_index + 1 ); } # 中黒 if ( $string eq "・" ) { printf( "・" ); return( $next_index + 1 ); } # 濁点、半濁点 if ( $string eq "゙" ) { printf( "゛" ); return( $next_index + 1 ); } if ( $string eq "゚" ) { printf( "゜" ); return( $next_index + 1 ); } # 長音記号 if ( $string eq "ー" ) { printf( "ー" ); return( $next_index + 1 ); } # 小文字ッ if ( $string eq "ッ" ) { printf( "ッ" ); return( $next_index + 1 ); } # その他の8bit文字 printf( "%s", $string ); return( $next_index + 1 ); } exit;