2012-11-08 10 views
-1

그래서 파일에 값을 출력하는 루프가 있습니다. 유일한 문제는 루프의 마지막 인쇄물 만 얻는다는 것입니다. 이 내 루프에서 인쇄되는 내용 인 경우 예를 들어, : 루프 자체에서 perl 파일을 덮어 씁니다.

1 1 
2 2 
3 3 

모든 것 내 파일은 라인 제 등 3 3 것이다. 여기 내 코드입니다 : 내가 플러시 $| = 1를 사용하려고했습니다

open my $f, '>', 'file.txt'; 

#$node_id set above somewhere... 
for my $key (keys %{$todo->{$node_id}->{'urls_hash'}}) { 
    print $f "$node_id $todo->{$node_id}->{'urls_hash'}->{$key}->{'domain_id'}\n"; 
} 

close $f; 

은,하지만 아무것도 할 것으로 보인다 didin't. 어쩌면 누군가가 이것에 뛰어 들기를 바랬습니다. 그리고 ... 등의 해시 해쉬에 대해 유감스럽게 생각합니다. 나는 그것이 지저분하다는 것을 안다.

+0

표준 출력에 데이터를 인쇄하여 파일이 아니라 잘못된 데이터인지 확인할 수 있습니까? –

+0

예, STDOUT으로 인쇄했습니다. 먼저 나열된 출력을 얻었습니다. – srchulo

+0

다른 파일 이름을 사용해 보셨습니까? –

답변

2

귀하의 질문은 #$node_id set above somewhere...입니다. 당신의 예상 출력에서 ​​:

1 1 
2 2 
3 3 

$node_id 설정되는 코드없이 말을 열심히하지만이 파일은 $node_id을 증가 할 때마다 다시 열 것 같습니다. open을 외부로 이동해야하는 또 다른 루프가 있습니까?

+0

고맙습니다. 그거였다. 그 고리는 지금까지 내가 깨닫지 못했던 또 다른 고리에 있었다. 고마워요! – srchulo

1

당신의 질문에 anwer가 아니다, 미안.

파일을 추가하려면 파일을 열 때 >>를 사용하십시오.

open my $f, '>>', 'file.txt'; 
+1

하지만 기존 파일에 추가하고 싶지는 않습니다. 처음으로 파일을 만듭니다. – srchulo

+0

테스트를 위해서만 작업을 추가 할 예정입니까? –

+0

나는 그것을 시도했다. Append가 작동하지 않습니다./ – srchulo