2011-10-10 46 views
0

我試圖解決一天中的問題,並且在我進入許多不成功的搜索之後!不能執行「bin」:錯誤的文件描述符(Perl)

我想在Perl腳本中使用ImageMagick套件中的二進制轉換來裁剪圖片。

當我試試這個簡單的代碼:

use Shell qw(convert); 

convert("-crop", "50%x50%", $Src, "new_image.png"); 

在那完美的作品單個文件。

但是當我試圖在我正在進行的項目上實現它時(我正在實習,現在正在修復功能),消息「無法執行轉換:錯誤文件描述符」出現!

我檢查了$ Src的路徑,嘗試用硬代碼重新設置,設置PATH,沒有任何改變。

,如果我嘗試簡單:

convert(-h); 

的作品完美! 我認爲在前面的代碼中可能存在干擾但不確定。

Ps:該項目從本地託管的php服務器啓動,donno如果它改變了一些東西,但永遠不會!

非常感謝您的閱讀和答謝!

---編輯--- 實際代碼問

Use Shell qw(convert); 

. 
. 
. 

sub checkSubScreen 
{ 
#Parameters init 
my ($this, $Scr0, $Scr1) = @_; 

    convert("-crop", "50%x50%", $Scr0, "tmp/scr0_crp.png"); 
    convert("-crop", "50%x50%", $Scr1, "tmp/scr1_crp.png"); 
.... 

我不能告訴你整個代碼它真的太大了,但只是問我會盡量表現!

+3

我們需要查看實際有問題的代碼才能幫助您。 – jwodder

+1

是否有一個標題說'不能執行'bin''的原因,但是你報告錯誤是'Can not exec convert'? – TLP

+0

是的,以保持標題更通用一些,但這並不會改變問題中的一件事;) – Kurt

回答

2

錯誤消息來自Shell。我不知道使用Shell而不是更傳統的system/qx/pipe open/IPC::Open3工具包,並且特別是我沒有看到使用Shell獲得什麼,他們認爲他們正在獲得什麼。

嘗試更傳統的系統調用

@args = ("50%x50%", $Src, "new_image.png"); 
system("convert", @args) and warn "convert @args: exit code was $?"; 

,看看你得到一個更傳統的錯誤消息。

0

好吧,最後我決定使用PerlMagick Api它的工作原理,我認爲我的問題是由於環境和可能非常具體。

答案!