Ниже приведен скрипт, который я написал для изменения значения одного из параметров в файле XML, расположенном в другом месте:
#!/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");
}
Но я получаю следующую ошибку:
Невозможно распознать кодировку этого документа в /usr/local/lib/perl5/site_perl/5.8.7/XML/SAX/PurePerl/EncodingDetect.pm строке 100. Для документа требуется элемент [Ln: 1, Col: 0 ]
Можете ли вы сказать мне причину, поскольку я не вызываю EncodingDetect.pm в своем коде?