Использование: в имени переменной в perl
Я действительно новичок в Perl и у меня есть проблема, когда я загружаю в XML с использованием XML::Simple, и у меня есть имена тегов в качестве имен хешей. Я хочу получить хеш с именем "xsd:schema", но очевидно, что $xsd:schema не работает. Я целую вечность гуглял это и не мог найти, как это сделать.
Как мне получить этот хеш, чтобы я мог узнать ключевые значения?
Редактировать:
Извините, я не очень хорошо себя объяснил. Я хочу узнать ключи и значения этих ключей в хэше на несколько уровней, но имя xsd: схема вызывает синтаксическую ошибку:
foreach my $attributes (keys %{ $data{$xsd:schema}{$xsd:element}}){
print "$attributes : ${$data}{$xsd:schema}{$xsd:element}{$attributes}\n";
}
Редактировать 2: Вот как я это сделал.
$schemaData = $data->{'xsd:schema'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'}->{'xsd:complexType'}->{'xsd:sequence'}->{'xsd:element'};
print Dumper($schemaData);
foreach my $fieldName (keys %{ $schemaData}){
$fieldType = $schemaData->{$fieldName}->{'type'};
print "$fieldType\n";
}
1 ответ
Используйте Data::Dumper для визуализации сложных структур данных.
XML:: Simple не создает новые переменные, он создает ссылку. Смотрите Perl Data Structures Cookbook.
use Data::Dumper;
use XML::Simple;
my $x = XMLin(q(<r xmlns:xsd="xsd"><xsd:schema atr="a">a</xsd:schema></r>));
print Dumper $x;
print $x->{'xsd:schema'}{content};
Выход:
$VAR1 = {
'xsd:schema' => {
'content' => 'a',
'atr' => 'a'
},
'xmlns:xsd' => 'xsd'
};
a