Я перебираю файлы в Perl, и я хотел бы получить правильное поле "Адрес" в файле. «Адрес» - это ха sh. Либо файл содержит только один «Adresse», и я его принимаю, либо он содержит несколько «Adresse», а «Adresse» на самом деле является массивом, содержащим несколько «Adresse», и мне просто нужен тот, имеющий «type» = «postale» , Вот мой код:
my $ad;
my $adresse;
if(ref($doc->{'Organisme'}->{'Adresse'}) eq 'ARRAY') {
print "\nI'M AN ARRAY!\n";
foreach $ad ($doc->{'Organisme'}->{'Adresse'}) {
print Dumper $ad;
if ($ad->{'type'} == 'postale') {
my $adresse = $ad;
}
}
} else {
my $adresse = $doc->{'Organisme'}->{'Adresse'}
}
print $fd $adresse->{'Ligne'};
Я получаю ошибку:
Not a HASH reference at ./scripts/actualiserDonnees.pl line 35
и строка 35:
if ($ad->{'type'} == 'postale') {
Очевидно, что "foreach" не итерируйте "$ do c -> {'Organisme'} -> {'Adresse'}", когда последний является массивом, потому что Dumper дает мне это:
$VAR1 = [
{
'Localisation' => {
"Pr\x{e9}cision" => '8',
'Longitude' => '1.9751304',
'Latitude' => '43.2279035'
},
'type' => 'physique',
'CodePostal' => '11270',
"Accessibilit\x{e9}" => {
'type' => 'ACC'
},
'NomCommune' => 'Laurac',
'Ligne' => 'Place Blanche-de-Laurac'
},
{
'Ligne' => '8 rue du Pont',
'CodePostal' => '11270',
'type' => 'postale',
'NomCommune' => 'Laurac'
}
];
Если я не сделал ' Тебе достаточно объяснить, не стесняйтесь задавать вопросы. Заранее спасибо:)