2011-09-08 8 views
1

에 인쇄 파일 핸들을 닫을 수 없습니다 나는 다음과 같은 펄은 니펫을했다 : 나는 다음과 같은 출력 얻고있다

open FH, " | lpr "; 
print FH "Hello"; 
print FH "This is a print test"; 
close FH or die "can't close: $! $?"; 

:

can't close: 256 at <filename> line 4 

어떤 도움을 주시면 감사하겠습니다을 ..

미리 감사드립니다 :)

답변

6

perldoc -f close

파일 핸들이 열려 파이프에서 온 경우, 관련 를 호출 다른 시스템 중 하나가 실패 할 경우 추가로 false를 반환합니다 "종료", 또는 프로그램 제로가 아닌 상태로 종료합니다.

누락 된 오류는 아마도 lpr 프로세스가 완료되지 않았거나 거기에 문제가 발생했기 때문일 수 있습니다. 인쇄가 잘 되었습니까?

+0

인쇄가 작동하지 않습니다 ... 나는 프린터 핸들이 닫힌 후에 만 ​​인쇄가 시작될 것이라고 생각합니다. – Rahim

+0

아마도'open'도 성공적인지 확인해야합니다. 'autodie 사용하기'는 중요한 기능에 대한 모든 검사를 수행하므로 편리 할 수 ​​있습니다. 유용한 모듈은 [CPAN] (http://search.cpan.org)에서 찾을 수 있습니다. – TLP

0

파일 핸들이 파이프 된 열기에서 나온 경우 close는 다른 syscalls 중 하나가 실패하거나 프로그램이 0이 아닌 상태로 종료되면 false를 반환합니다. 유일한 문제는 프로그램이 0이 아닌 곳에서 나왔다면, $!은 0으로 설정됩니다. 파이프를 닫으면 파이프에서 실행중인 프로세스가 종료 될 때까지 기다리고 (나중에 파이프의 출력을보고 싶을 경우), 해당 명령의 종료 상태 값을 $?${^CHILD_ERROR_NATIVE}에 암시 적으로 넣습니다.