2013-02-02 1 views
0

에 새 파일에 파일의 내용을 저장하고 난 다음을 수행하십시오읽기 디렉토리와 내가 새 파일에 일부 파일의 내용을 저장할 펄

use strict; 
use warnings; 
use HTML::TreeBuilder::XPath; 

my ($dir) = @ARGV; 
my @files = glob "details/*"; 
my $filename = 'target.txt'; 

for my $file (@files) { 
    my $tree = HTML::TreeBuilder::XPath->new_from_file($file); 
    my @opacity = $tree->findnodes_as_strings('//div[@class="opacity description"]'); 
    open my $fh, '>>', $filename; 
    print $fh for @opacity; 
} 

불행하게도이 작동하지 않습니다. 그리고 왜 이해가 안되니?

+1

' "가 작동하지 않습니다"'문제를 설명하는 아주 나쁜 방법입니다. 그것은 정말로 아무 것도 말하지 않습니다. 'Data :: Dumper'를 사용하여 디버그 인쇄 메시지를 사용하고 문제에 대한 더 많은 정보가있을 때 돌아 오십시오. – TLP

답변

2
  1. 확인 open의 반환 값은 : "뭔가가 작동하지 않는"경우

    open my $fh ">>", $filename or die "Can't open $filename: $!"; 
    

    이 귀중한 통찰력을 제공 할 수 있습니다.

  2. print에 대한 구문이 모호합니다. 그래서 당신은 명시 적으로 인쇄하고, 아마도 @opacity의 각 요소 다음에 줄 바꿈을 추가하는 것을 지정하려면

    print FILEHANDLE LIST 
    print {EXPR} LIST  # EXPR has to produce a filehandle object 
    print LIST   # prints to the `select`ed filehandle, usually STDOUT 
    print     # prints $_ by default 
    

    같은 print 또는 say를 사용합니다. 그러니

    print {$fh} "$_\n" for @opacity; 
    

    또는 use feature 'say' (펄 5.10 및 더 나은) :

    say {$fh} $_ for @opacity; 
    
+0

왜 태그를 제거하는지 알 수 있습니까? –

+1

'findnodes_as_strings'를 호출했기 때문에 요소의 텍스트 내용 만 출력합니다.이 텍스트는 [이전 질문] (http://stackoverflow.com/questions/14646764)에 내 솔루션에 포함 시켰습니다. 정규식 그랬어. 새로운 질문에서 실제로 원하는 내용을 설명하면 아마도 도움이 될 것입니다. – Borodin

+0

@Borodin 스크립트가하는 일을하고 싶지만 모든 html 태그를 유지하고 싶습니다. –

관련 문제