2011-11-03 2 views
0

템플릿 툴킷을 사용하여이 데이터를 가져 오려고했지만 얻을 수 없습니다. perl 템플릿 툴킷을 사용하는 중에 오류가 발생했습니다.

$var1={ 
     'Object'=>[ 
       { 
       'Component'=>[ 
           { 
           'type'=>'analog', 
           'name'=>'Temp', 
           'value'=>'23' 
           }, 
           { 
           'type'=>'digital', 
           'name'=>'Temp', 
           'value'=>'22' 
           }, 
           { 
           'type'=>'analog', 
           'name'=>'pressure', 
           'value'=>'23' 
           }, 
           { 
           'type'=>'analog', 
           'name'=>'humidity', 
           'value'=>'23' 
           } 
           ] 
          } 
          ], 
          }; 

은 내가 값을 얻을 수 없습니다 생각하고 오류를 제공하지 않습니다 끄트머리,이 값을 얻는 방법을 도와주십시오

[% FOREACH st IN Object %] 
[% FOREACH st IN Object.Component %] 
[% Component.type %][% Component.name %][% Component.value %] 
[% END %] 
[% END %] 

같은 시도했다.

[% FOREACH obj IN Object %] 
[% FOREACH comp IN obj.Component %] 
[% comp.type %] [% comp.name %] [% comp.value %] 
[% END %] 
[% END %] 
+1

'. – friedo

+0

죄송합니다, 지금 편집했습니다. 하지만 여전히 문제가 있습니다 – pavani

+0

템플릿에 동일한 이름의 두 개의 중첩 루프 변수가 있습니다. 그러면 실제로 루프 변수를 사용하지 않고있는 것입니다. – friedo

답변

1
는 당신의 템플릿을 변경

. 나는 TT가 범위를 다루는 방법을 정확하게 기억하지 못하지만 이것이 좋지 않은 것으로 의심합니다. Component이라는 변수에서 값을 추출하려고합니다. 구성 요소라는 변수를 인스턴스화하지 않았습니다. 존재하지 않는 변수를 참조하면 정상적인 상황에서 TT가 오류를주지 않는다는 것을 기억하십시오. 단순히 아무 것도 출력하지 않습니다.

오류를 표시하도록 변경하려면 STRICT 구성 옵션을 설정해야합니다. 또한, 디버그 옵션 중 하나를 설정합니다

my $template = Template->new(
    { 
     STRICT => 1,  # or 
     DEBUG => 'undef' 
    }); 

같은 것을보십시오 : 데이터에 소문자하지만 템플릿에 자본`O`을 가지고 있습니다 object`

[% FOREACH obj in Object %] 
    [% FOREACH item in obj.Component %] 
     [% obj.type %] [% obj.name %] [% obj.value %] 
    [% END %] 
[% END %] 
+0

답장을 보내 주셔서 감사 드리며 완벽한 답변을 보내주십시오. – pavani

1

당신은 두 st 변수가 있습니다