200 바이트 레코드 끝에 201 및 202 바이트로 \ r \ n을 추가하는 Perl 프로그램을 작성하고 있습니다. 내가 할 노력하고이 방법이 :레코드 끝에 x0D x0A를 추가하십시오.
use constant REPORT_LINE_LEN => 200;
while(($rc = read $infile, $report_line, REPORT_LINE_LEN(), 0) != 0)
{
chomp $report_line;
$report_line .= "\r\n" . "\n";
print $outfile $report_line;
}
캐리지 리턴^M 문자 위치 (201)에 있고, 나는 202에 \ n을 필요하지만이 증가하지 않고 거기에 배치 얻이 수없는 것 레코드의 길이는 202 바이트 이상입니다. vim을 사용하여^M의 위치를 확인 중이며 파일이 여전히 Unix 형식임을 나타냅니다.
나는 많은 출처를 조사해 왔으며, 어리둥절 해했다. 마지막 두 바이트가 어떻게 정력에 나타날지를 포함하여 어떤 도움을 주시면 감사하겠습니다.
나는 vim에서 레코드 길이를 확인하기 위해 '$'를 눌러 레코드 길이를 확인합니다. 지금은 201이라고 말합니다. rmvtape.out
이이 레코드를 포함하는 파일 인 경우 레코드 길이를 확인하기 위해 head -n 1 rmvtape.out | wc -c
도 사용하고 있습니다. 길이는 202
입니다.
그래서이 경우 vim에서^M이 보이지 않습니까?
는 출력 파일이 ['binmode'] (http://perldoc.perl.org/functions/binmode.html) 사용하고 있는지 확인합니다 : 마지막
\n
모든 것이 잘되어야 예컨대을 생략합니다. 그럼 그냥 "\ r \ n"하는 것으로 충분합니다. – Miller기록 길이를 확인하는 방법에 대해 자세히 설명해 주시겠습니까? 또한 "202 바이트 이상"은 얼마입니까? –
@ Mr.Llama 방금 답변을 편집했습니다. – octopusgrabbus