Por que recebo um erro de XML :: SAX :: PurePerl :: EncodingDetect embora eu não carregar esse módulo?

votos
2

Abaixo está o script que eu escrevi para alterar o valor de um dos parâmetros em um arquivo XML situado em um local diferente:

#!/usr/bin/perl -w

use Cwd;
use XML::Simple;
use Data::Dumper;
no warnings;

my $before_upgrade_value = &pre_upgrade_value;
print Value before upgrade:: $before_upgrade_value \n;

&change_value ($before_upgrade_value);

&change_value (America);

my $after_upgrade_value = &pre_upgrade_value;

print Value after upgrade:: $after_upgrade_value \n;
print Done \n;

sub pre_upgrade_value {
    my $xml = new XML::Simple;

    # read XML file
    my $input_xml  = /usr/tmp/country/CountryConfig.xml;

    my $data = $xml->XMLin($input_xml);
    my $arg0 = $data->{COMMON}->{COUNTRY_LIST}->{Value};

    print Arg0 is $arg0 \n;
    return $arg0;
}

sub change_value {
    my $arg0 = shift;

    my $arg1 = ENGLAND;

    my $arg2 = /usr/tmp/country/CountryConfig.xml;

    system(perl -pi -e 's/$arg0/$arg1/' $arg2);
}

Mas eu estou recebendo o seguinte erro:

Não é possível reconhecer codificação deste documento em linha /usr/local/lib/perl5/site_perl/5.8.7/XML/SAX/PurePerl/EncodingDetect.pm 100. documento requer um elemento [Ln: 1, Col: 0]

Você pode me dizer a razão porque eu não estou chamando EncodingDetect.pm no meu código?

Publicado 27/08/2009 em 06:56
fonte usuário
Em outras línguas...                            


2 respostas

votos
7

XML :: SAX é usado por XML :: Simple. A partir do código:

# XML::Simple requires the services of another module that knows how to parse
# XML.  If XML::SAX is installed, the default SAX parser will be used,
# otherwise XML::Parser will be used.

Uma parte do XML :: SAX é XML :: SAX :: PurePerl :: EncodingDetect. Parece que você tem espaços em branco no início do seu XML, você pode encontrar este nó PerlMonks útil.

Respondeu 27/08/2009 em 07:03
fonte usuário

votos
0

Quando você usa um módulo, você também usar todos os módulos que ele utiliza e todos os módulos que eles usam, e ... :)

Respondeu 27/08/2009 em 18:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more