나는 호기심에 문제가있다. 나는 주변을 둘러 볼 수 없다. 내가 잘못하고있는 것을 제발 볼 수 있니? 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 paramenters를 지나가고있다. 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