私は好奇心の問題があります。私が間違っていることを見てください。私はXML :: LibXMLを使ってPerlでXMLを構築しようとしています。私がサブルーチンを構築して引数を渡すまでは、すべて正常に動作します。アウトデータが変更されているPerlでパラメータを渡す方法
まず
my $root = $doc->createElement("XML_FILE");
my @sortedOuterTags = qw (JMS_VERSION
FILE_NAME
SUBMIT_BY
SUBMIT_DATE
);
# Use hash slice to access the list in hash elements
# Remember has elements are accessed randomly, hence hash slice-ing
my %outHashTags;
@outHashTags { @sortedOuterTags } = ('data1',
'data2',
'data3',
'data3');
for my $name (@sortedOuterTags) {
my $outTag = $doc->createElement($name);
my $outValue = $outHashTags{$name};
$outTag->appendTextNode($outValue);
$root->appendChild($outTag);
}
出力をビルド動作するコード:今すぐ
<JMS_VERSION>data1</JMS_VERSION>
<FILE_NAME>data2</FILE_NAME>
<SUBMIT_BY>data3</SUBMIT_BY>
<SUBMIT_DATE>data4</SUBMIT_DATE>
エラー:できるだけ早く私は以下のショーとしてサブルーチンにループのためのスピンオフとして
をエラーが発生します。私は3つのパラメタを渡しています。 1)%のreportHashTagデータを取得することはできません)storedReportTag 2の配列の値を取得することはできません 3)$レポート要素が空である
コード:
私は私のように、サブに入れたいbuildXMLElements(\@sortedReportTag, %reportHashTags, $report);
sub buildXMLElements() {
my(@elementTags, %hashTags, $parentElement) = @_;
for my $name (@elementTags) {
my $reportTag = $doc->createElement($name);
my $reportValue = $hashTags{$name};
$reportTag->appendTextNode($reportValue);
$parentElement->appendChild($reportTag);
}
}
コードを再利用するためにビルドするためのタグがいくつかあります。それは
buildXMLElements(\@sortedReportTag, \%reportHashTags, $report);
sub buildXMLElements() {
my($elementTags, $hashTags, $parentElement) = @_;
for my $name (@$elementTags) {
my $reportTag = $doc->createElement($name);
my $reportValue = $hashTags->[$name];
$reportTag->appendTextNode($reportValue);
$parentElement->appendChild($reportTag);
}
}
:それは次のようになります私のサブを編集した後
:私は
はあなたに
更新をありがとう.......両方の直接およびリファレンスとしてパラメータを渡してみました次の行で死ぬ:
my $reportValue = $hashTags->[$name];
最終更新日:
ジムの助けを借りて私は、コードを修正:ここではあなたがそれを行うことはできません
buildXMLElements(\@sortedReportTag, \%reportHashTags, $report);
sub buildXMLElements() {
my($elementTags, $hashTags, $parentElement) = @_;
for my $name (@$elementTags) {
my $reportTag = $doc->createElement($name);
my $reportValue = $hashTags->{$name};
$reportTag->appendTextNode($reportValue);
$parentElement->appendChild($reportTag);
}
}
http://stackoverflow.com/questions/29354417 – mob
http://stackoverflow.com/questions/1161043 – mob