perlでエンコーディングがわからずに,日本語が書いてあるファイルを読む方法
use Encode::Guess qw(euc-jp shiftjis 7bit-jis);
...
my $cont;
my $msg = read_with_enc("filepath.txt", \$cont);
if (!deifned($cont)) { die $msg; }
# $cont にファイルの中身が入っている
...
sub read_with_enc {
my ($f, $pcont) = @_;
$$pcont = undef;
open(F, $f) or return "Failed to open $f: $!";
local $/ = undef;
my $cont = <F>;
my $enc = guess_encoding($cont, qw(euc-jp shiftjis 7bit-jis));
ref($enc) or return "Failed to guess the encoding of $f: $enc";
$$pcont= $enc->decode($cont);
return "";
}
もちろん,ファイルが巨大ではないという前提である.