不能执行“bin”:错误的文件描述符(Perl)

时间:2011-10-10 15:32:10

标签: perl exec

我正在尝试解决一天的问题,经过许多不切实际的搜索后,我就在这里!

我正在尝试在Perl脚本上使用ImageMagick套件中的二进制转换来裁剪图片。

当我尝试这个简单的代码时:

use Shell qw(convert);

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

在单个文件上运行完美。

但是当我尝试在我正在进行的项目上实现它时(我正在实习,现在修复功能),出现了“无法执行转换:错误文件描述符”的消息!

我检查了$ Src的路径,尝试通过硬代码重新设置,设置PATH,没有任何改变。

BUT

如果我尝试一个简单的:

 convert(-h);

完美无缺! 我认为以前的代码中的某些内容可能会干扰但不确定。

Ps:该项目是从本地托管的php服务器启动的,如果它改变了某些东西,那就不要了!

非常感谢您的阅读,也感谢您的回答!

--- --- EDIT 要求的实际代码

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");
....

我不能告诉你整个代码它真的太大了但只是问我会试着展示!

2 个答案:

答案 0 :(得分: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 $?";

并查看是否收到更传统的错误消息。

答案 1 :(得分:0)

好吧最后我决定使用它运行的PerlMagick Api,我认为我的问题是由于环境而且可能非常具体。

寻求答案!