msa*_*bot 0 php perl imagemagick exec
我正在尝试将tif文件的文件夹转换为jpeg,以便它们可以显示在我的网站上.我目前的方法不起作用.我写了一个perl脚本
#!/usr/bin/perl
opendir(DIR, $ARGV[0]);
@files = readdir(DIR);
closedir(DIR);
foreach $file (@files){
if($file =~ /(.*?)\.tif/){
print "converting $file\n";
`convert -auto-level -depth 12 -type grayscale $ARGV[0]$file $ARGV[1]$1.jpg`;
}
}
Run Code Online (Sandbox Code Playgroud)
但是这永远不会进入for循环,因为opendir失败了.该文件夹确实存在.
我通过exec调用它("perl test.pl arg1 arg2"); 在PHP中
这是我应该这样做,因为它不起作用?
此外,我提供了几乎所有需要访问或写入chmod 777的内容
谢谢
首先,你应该在每个脚本和模块中始终拥有这两行:
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
这些行会给你很多错误和线索,告诉你你错过了什么.
其次,您需要检查opendir命令的返回值,因为如果它无法打开目录(例如,如果它不存在),它会返回错误.该$!变量包含最新的错误消息.如果您在尝试打开的错误消息中打印确切的文件名,则可以查看文件规范是否不正确:
opendir (my $dir, $ARGV[0]) or die "Cannot open $ARGV[0]: $!";
my @files = readdir($dir);
closedir($dir);
Run Code Online (Sandbox Code Playgroud)
如果您的目录规范是相对的,并且您位于错误的目录中,则可以使用chdir更改目录.
opendir命令的规范在perldoc -f opendir中.您可以阅读perldoc perlvar中的特殊变量.