2015-02-02 2 views
-1

저는 Perl을 매우 처음 사용하고 있으며, 제가 원하는 것을 찾는데 어려움을 겪고 있습니다.Perl 변수로 파일을 읽고 각 줄에 접미사를 추가하십시오.

내가

text 2015-02-02: 
- blabla1 
- blabla2 
text2 2014-12-12: 
- blabla 
- ... 

내가 파일을 읽을 VAR에 넣어려고 같은 것을 포함하는 텍스트 파일을 가지고, (내 VAR의) 각 라인의 끝에 그것을 보내 그것을 사용하는 추가 웹 페이지.

이것은 내가 가지고있는 순간입니다. 그것은 부분을 제외하고 작동합니다.

if (open (IN, "CHANGELOG.OLD")) { 
     local $/; 
     $oldchangelog = <IN>'</br>';    
     close (IN); 
    $tmplhtml{'CHANGELOG'} = $oldchangelog; 
} else { 
    # changelog not available 
    $tmplhtml{'CHANGELOG'} = "Changelog not available"; 
} 

감사합니다.

+3

이것은 YAML 파일처럼 보입니다. 그렇다면 YAML 파서를 사용하여 YAML 파일을 읽어야합니다. ['YAML :: Tiny'] (https://metacpan.org/pod/YAML::Tiny)는 CPAN에 관한 몇 가지 다른 것들이 있습니다. –

+1

' '
'이 (가) 구문 오류입니다 ... 아마도 ''입니다. '
' '웹 페이지에서 YAML 형식을 보려고하는 경우 대신'

 ..
'으로 묶을 수 있습니다. – TLP

+0

나는 각 줄 끝에'
'을 넣으려고하는데, 이는 파일 slurping에서 작동하지 않을 것이다. – Sobrique

답변

1

다른 사람이 언급했듯이 - YAML처럼 보이므로 YAML로 분석하는 것이 더 적절할 수 있습니다.

그러나 시나리오를 해결하기 :

  • 3 인수 파일은 좋다 열립니다.
  • 당신은 local $/;을 사용하고 있습니다. 즉, 전체 파일을 문자열로 읽는 중입니다. 이는 라인 단위 처리에 적합하지 않습니다.

해시의 모든 요소에 모든 것을 넣는 것처럼 보입니다. 이 일을하는 특별한 이유가 있습니까? 어쨌든

: 대안으로

if (open (my $input, "<", "CHANGELOG.OLD")) { 
    while (my $line = <$input>) { 
     $tmplhtml{'CHANGELOG'} .= $line . " <BR/>\n"; 
    } 
} 
else { 
    $tmplhtml{'CHANGELOG'} = "Changelog not available"; 
} 

- 당신이 <PRE> 태그를 사용하여 HTML에 '깔끔하게'텍스트를 렌더링 할 수 있습니다.

+0

나는 YAML이 무엇인지 모르겠다. 나는 그것을 살펴볼 것이다. HTML 페이지에 changelog (.txt)를 표시하고 싶었습니다. 아니 웨이, 그게 다야! 너무 간단 할 때 :-) 고마워! – Nexius2

+0

이것은 YAML입니다 : http://www.yaml.org/ – Sobrique

관련 문제