#----------------------------------------------------------------------- # # 日本語校正支援 # # 使用方法 # perl proof.pl ルールファイル, 作業ファイル, ... # # #----------------------------------------------------------------------- use Encode; $rulenum = 0; # ルールの読み込み open(IN, $ARGV[0]); while( ) { s/[\r\n]//g; $original_rule = decode( "shiftjis", $_ ); @field = split( /\t/, $original_rule ); $rulenum++; $rule[$rulenum] = $original_rule; $pattern[$rulenum] = $field[0]; $comment[$rulenum] = $field[1]; if ( $pattern[$rulenum] eq "" ) { printf( "パターンがありません:%d:%s\n", $rulenum, $_ ); exit; } if ( $comment[$rulenum] eq "" ) { printf( "注釈がありません:%d:%s\n", $rulenum, $_ ); exit; } } if ( $rulenum == 0 ) { printf( "ルールがないかファイルが開けません\n"); exit; } close(IN); for ( $i = 1; $i <= $#ARGV; $i++ ) { open(IN, $ARGV[$i]); while() { s/[\r\n]//g; $original_string = decode( "shiftjis", $_ ); for ( $j = 1; $j <= $rulenum; $j++ ) { $string = $original_string; $string =~ s/$pattern[$j]/<<$&>>/g; if ( $string ne $original_string ) { # matched $output_string = encode( "shiftjis", $string ); $output_comment = encode ( "shiftjis", $comment[$j] ); printf( "%s:%d\t%d:%s|\t%s\n", $ARGV[$i], $., $j, $output_comment, $output_string ); } } } close(IN); } exit;