stdin에서 레코드를 대화식으로 읽길 원합니다. CTRL + D는 레코드의 끝을 표시합니다. ctrl + c를 누를 때까지 영원히 계속됩니다. 내 코드에서 다음과 같은 오류가 발생하고 있습니다.STDIN에서 레코드를 읽는 중 초기화되지 않은 값 오류가 발생합니다
Use of uninitialized value in open
Use of uninitialized value in <HANDLE>
null 레코드를 건너 뛰려면 오류를 피할 수 있습니다. 그러나 나는 내가 이해하지 못하는 문제를 마스킹하는 것처럼 느낀다. 나는 stdin이 닫히고 있다고 생각한다. 그러나 나는 확실하지 않다. 오류가 발생하는 이유와 루프를 수정하는 방법을 설명 할 수 있습니까? format
는 출력 파일 핸들의 이름과 매개 변수로 그림 형식을 기대로
my $eof = $INPUT_RECORD_SEPARATOR;
while (1) {
local $INPUT_RECORD_SEPARATOR = chr(0x04);
my $rec = <STDIN>;
# format last record that ended with ^D
local $INPUT_RECORD_SEPARATOR = $eof;
open my $input, "<", \$rec;
my_formatting_func $input;
close $input;
}
Ctrl + D는 EOF입니다. – choroba
'format'? 파일 핸들에서? 이게 뭐라고 생각하니? – TLP
실제 함수 이름을 다른 것으로 변경하고 싶었습니다. 나는 포맷이 실제 펄 함수라고 의심하지 않았다. –