概要

  • 置換コードリストに従って、入力テキストファイル中の未定義コードを置換してファイルへ出力する。
  • コード毎に何件置換したかをレポートする。

ダウンロード

ソースコード

# テキストファイル中の Latin-1 未定義コードの置き換え

use strict;
use warnings;
use utf8;

my $infile  = "readme.txt";
my $outfile = "readme_.txt";

my %cnvtbl = (
	0x91 => '{{',
	0x92 => '}}',
	0x93 => '[[',
	0x94 => ']]',
);

open( IN, $infile ) || die( "can't open '$infile'.\n" );
my @file = <IN>;
close( IN );

my $body = join( "", @file );

my $len = length( $body );

my ( $i, %codes, $c );

my $outbody = "";

for( $i=0; $i<$len; $i++ ){
	$c = substr( $body, $i, 1 );
	if ( ord( $c ) > 127 ){
		$codes{ ord( $c ) } += 1;
		$c = $cnvtbl{ ord( $c ) };
	}
	$outbody .= $c;
}

foreach $c ( sort( keys( %codes ) ) ){
	printf( "%02x: %d\n", $c, $codes{ $c } );
}

open( OUT, '>'.$outfile ) || die( "can't open '$outfile'.\n" );
print OUT $outbody;
close( OUT );

# EOF