Perl での次のハッシュ宣言に苦労しています。
my %xmlStructure = {
hostname => $dbHost,
username => $dbUsername,
password => $dbPassword,
dev_table => $dbTable,
octopus => {
alert_dir => $alert_dir,
broadcast_id => $broadcast_id,
system_id => $system_id,
subkey => $subkey
}
};
私はグーグルで検索しましたが、解決策を思いつくことができませんでした。変更を加えるたびに、別の警告が表示されたり、望ましくない結果が得られたりします。
Perl は次のテキストに不満を持っています:
Reference found where even-sized list expected at ./configurator.pl line X.
モジュールを使用したいので、そのようにしています:
XML::Simple
次の構造を持つ XML ファイルを生成するには、次のようにします。
<settings>
<username></username>
<password></password>
<database></database>
<hostname></hostname>
<dev_table></dev_table>
<octopus>
<alert_dir></alert_dir>
<broadcast_id></broadcast_id>
<subkey></subkey>
</octopus>
</settings>
次のようなもの:
my $data = $xmlFile->XMLout(%xmlStructure);
warn Dumper($data);
後者の xml サンプル構造が表示されます。
アップデート:
ハッシュ参照に中かっこの代わりに括弧を使用しようとしたことを忘れていましたが、動作しているように見えますが、XML ファイルは適切に記述されていません: 次の構造になってしまいます:
<settings>
<dev_table>5L3IQWmNOw==</dev_table>
<hostname>gQMgO3/hvMjc</hostname>
<octopus>
<alert_dir>l</alert_dir>
<broadcast_id>l</broadcast_id>
<subkey>l</subkey>
<system_id>l</system_id>
</octopus>
<password>dZJomteHXg==</password>
<username>sjfPIQ==</username>
</settings>
これは正確に間違っているわけではありませんが、後で XML ファイルが大きくなるにつれて問題が発生するかどうかはわかりません。資格情報は RC4 アルゴリズムを使用して暗号化されますが、特殊文字による誤動作を避けるために base 64 でエンコードしています。ありがとう