2011-09-08 69 views
1

我有以下的Perl片段:無法關閉打印文件句柄在Perl

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將返回false。如果唯一的問題是程序退出非零,$!將被設置爲0。關閉管道還等待在管道上執行的進程退出 - 如果您希望事後查看管道輸出,並隱式將該命令的退出狀態值設置爲$?${^CHILD_ERROR_NATIVE}