#基礎設定 use strict; use warnings; use utf8; use Encode qw/encode decode/; #入力と出力ファイルを開く my $file1 = 'in.txt'; open my $fh1, '<', $file1 or die "Can't open $file1:$!"; my $file2 = 'out.txt'; open my $fh2, ">>", $file2 or die "Can't open $file2:$!"; my $logfile = 'log.txt'; open my $lh, '>', $logfile or die "Can't open $logfile:$!"; print $lh encode('utf8', "新しい置換が始まった。\n"); #基礎変数を定義my $numberall = 0; my $numberall = 0; my $numberone = 0; my $line1 = ""; my @komoku; my $shin = ""; my $kyu = ""; my $line3 = ""; my $linekyu = ""; my $out = ""; #置換項目を一つのarray変数に読み込む my $file3 = 'okikaekomoku02.txt'; open my $fh3, '<', $file3 or die "Can't open $file3:$!"; while ($line3 = <$fh3>) { $line3 =decode('utf8', $line3); $line3 =~ s/\?//; $line3 =~ s/\r//; $line3 =~ s/\n//; @komoku = (@komoku,$line3); } close $fh3; #入力ファイル(Liya-shakumon.html)を行単位に読み込む while ($line1 = <$fh1>) { $line1 =decode('utf8', $line1); $line1 =~ s/\?//; $line1 =~ s/\r//; $line1 =~ s/\n//; #置換小目のファイル構造が正しいかどうかを確認しつつ置換項目を取得 foreach $line3 (@komoku) { if ($line3 =~ /^([^\t]+)\t([^\t]+)$/) { $kyu = $1; $shin = $2; } else { print "mismatch for " . encode('cp932', $line3); } #置換項目の照合 $linekyu =$line1; $numberone = 0; while ($line1 =~ s/$kyu/$shin/) { $numberall++; $numberone++; } if ($numberone >= 1) { $out = "新:" . $shin . "\t" . "旧:" . $kyu. "\t" . $numberone . "\n新:" . $line1 . "\n旧:" . $linekyu . "\n\n"; print $lh encode('utf8', $out); } }#置換項目取得と照合終了 print $fh2 encode('utf8', $line1."\n"); }#入力ファイル読み込み終了 print $lh encode('utf8', "置換総数は" . $numberall . "個です" . "\n"); close $lh; close $fh1; close $fh2;