Евгений, спасибо большое за отклик, Encode::Guess у меня заработал.
Причины, по которым Encode::Guess у меня не работал, были такими: 1) Я забыл поставить круглые скобки при вызове метода name() Мне надо было писать не так print "enc = ".$enc->name."\n"; а так: print "enc = ".$enc->name()."\n"; 2) При вызове guess_encoding надо было загружать только cp1251 Мне надо было писать не так my $enc = guess_encoding( $data, qw/euc-jp shiftjis 7bit-jis UTF-8 utf-8 ascii cp1251/ ); а так my $enc = guess_encoding( $data, qw/cp1251/ ); Не надо было указывать utf8, потому что модуль Encode::Guess поддерживает распознавание utf8 сразу, "из коробки", без явного указания. Я невнимательно прочёл документацию. "By default, it checks only ascii, utf8 and UTF-16/32 with BOM. use Encode::Guess; # ascii/utf8/BOMed UTF" http://search.cpan.org/~dankogai/Encode-2.40/lib/Encode/Guess.pm Евгений, спасибо за помощь, вот мой работающий код, он распознаёт cp1251 и utf8. #!/usr/bin/perl use strict; use warnings; use Encode; use Encode::Guess; my $filename = "RDG_2010_0000_0001_0001.xml"; open my $fh, "<", $filename or die "can not open file $filename for reading \n"; my $data = do{ local $/; <$fh> }; close $fh; my $enc = guess_encoding( $data, qw/cp1251/ ); print "enc = ".$enc->name()."\n"; 17 декабря 2010 г. 20:03 пользователь Evgeniy Kosov <[email protected]> написал: > On 17.12.2010 19:17, Dmitry Arsentiev wrote: >> >> Следующий кусок кода: >> my $enc = guess_encoding( $data, qw/euc-jp shiftjis 7bit-jis UTF-8 >> utf-8 ascii cp1251/ ); >> print "enc = ".$enc->name."\n"; >> создаёт такое сообщение: >> Can't locate object method "name" via package "utf-8-strict or utf8" >> (perhaps you forgot to load "utf-8-strict or utf8"?) at ./try2guess.pl >> line 41. > > На самом деле тут "utf-8-strict or utf8" -- сообщение об ошибке. В случае, > когда кодировка определяется однозначно, возвращается объект Encode::XS, у > которого можно в т.ч. "спросить" name(). Мягко говоря, своеобразный > интерфейс... > > Я бы, наверное, продолжил искать альтернативы, или остановился на том, что > посоветовал Lars. > > -- > BR, > Evgeniy Kosov > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
