久しぶりにPerlのコードを書いた

スクリプトのutf8化計画に役立つであろうコードを書いた。 スクリプトのあるディレクトリ以下のファイルを走査して、ファイルの文字コードをeuc-jpからutf8に変換するスクリプトだ。 それにしても、作るのに妙に時間がかかった。 徐々に勘を取り戻せればいいのだけど…。 で、色々と調べながら書いていたら、面白いモジュールを色々と見つけた。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl
use strict;
use warnings;
use Fatal qw/open close/;
use Encode;
use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;
use File::Find::Rule;
my $rule =  File::Find::Rule->new;
$rule->file;
$rule->name( '*.cgi', '*.pm' );
my @files = $rule->in( '.' );
foreach my $file (@files) {
print $file . "\n";
euc2utf8($file);
}
sub euc2utf8 {
my $filename = shift;
if (-f $filename) {
my $fh;
open $fh, "<", $filename;
my $doc;
{
local $/ = undef;
$doc = <$fh>;
}
close $fh;
my $enc = guess_encoding($doc);
ref($enc) or die "Can't guess: $enc";
open $fh, ">", $filename . ".utf8";
Encode::from_to($doc, $enc, "utf8");
print $fh $doc;
close $fh;
}
}

Comments

comments powered by Disqus