我正在尝试将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`;
}
}
但是这永远不会进入for循环因为opendir失败了。该文件夹确实存在。
我通过exec调用它(“perl test.pl arg1 arg2”);在PHP
这是我应该这样做的原因,因为它不起作用吗?
此外,我还提供了几乎所有需要访问或写入chmod 777的内容
感谢
答案 0 :(得分:6)
首先,你应该总是在每个脚本和模块中都有这两行:
use strict;
use warnings;
这些行会给你很多错误和线索,告诉你你错过了什么。
其次,您需要检查opendir
命令的返回值,因为如果它无法打开目录(例如,如果它不存在),它会返回错误。 $!
变量包含最新的错误消息。如果您在尝试打开的错误消息中打印确切的文件名,则可以查看文件规范是否不正确:
opendir (my $dir, $ARGV[0]) or die "Cannot open $ARGV[0]: $!";
my @files = readdir($dir);
closedir($dir);
如果您的目录规范是相对的,并且您在错误的目录中,则可以使用chdir更改目录。
opendir命令的规范在perldoc -f opendir中。您可以在perldoc perlvar中了解特殊变量。