그래서 누군가가 내 이유는 다음 코드를 실행할 때 설명 할 수있다, 그것은 ".link/output"줄의 처음과 끝에 모두 인쇄합니다. 나는 줄의 끝에서만 인쇄하기 위해 노력했다. 이견있는 사람?왜이 인쇄가 perl에서 두 번입니까?
#!/usr/local/bin/perl
use warnings;
use strict;
my $logfiles = $ARGV[0]; #file containing the list of all the log file names
my @logf =();
my $i;
open (F2, "<", $logfiles);
while(<F2>){
@logf = $_;
foreach $i(@logf){
print $_.".link/output";
}
}
close F2;
그래서 예를 들어, 내가에서 읽고 있어요 파일 인 경우 :
cat
dog
내가보고 싶어 :
cat.link/output
dog.link/output
을하지만 점점 오전 isntead :
.link/outputcat.link/output
.link/outputdog.link/output
아무도 나에게 이유를 설명해 줄 수 없었습니다. 무슨 일이 일어나고 있는지, 어떻게 고칠 수 있습니까? 고맙습니다.
목록에 빈 요소가 있다고 생각합니다. 빈 문자열에 ".link/output"을 연결합니다. – PinkElephantsOnParade
'while'과'foreach' 루프가 예상 횟수만큼 실행되고 있는지 확인할 수 있습니까? –
왜 배열에 스칼라를 할당하고 배열을 반복하려고합니까? 하나의 값만 포함 할 수 있으므로 아무런 루프도 필요하지 않습니다. 그리고 루프에서, 당신은 루프 변수'$ i'를 사용하지 않습니다, 당신은 어쨌든'$ _'을 사용합니다. '@logf = $ _; $ i (@logf) {인쇄 $ _. ...}'이 모든 것은 완전히 중복됩니다. 당신은 단지'print $ _ .link/output \ n "이라고 쓸 수도 있습니다. –
TLP