Html 从perl cgi运行系统命令只能在第一个foreach循环上工作

Html 从perl cgi运行系统命令只能在第一个foreach循环上工作,html,perl,cgi,Html,Perl,Cgi,这是一个foreach循环,我在cgiperl脚本中使用了它。cgi正确执行,打印出每个变量,但只执行一次sed/sort系统命令 如果我运行以下命令,我将生成下面的html页面,数组大小为3,但只生成tmpsort1.txt。所有输入均已检查和验证 foreach $path (@paths){ $i++; print "$path\t"; $command = "sed 's/ (.*)//' $path | sort -k1 >/var

这是一个foreach循环,我在cgiperl脚本中使用了它。cgi正确执行,打印出每个变量,但只执行一次sed/sort系统命令

如果我运行以下命令,我将生成下面的html页面,数组大小为3,但只生成tmpsort1.txt。所有输入均已检查和验证

foreach $path (@paths){
        $i++;
        print "$path\t";
        $command = "sed 's/ (.*)//' $path | sort -k1 >/var/www/analyses/tmp/tmpsort$i.txt";
        print "$command\t";
        system("$command");
        print "$path<br>";
}
只是确认一下,只创建了/var/www/tmp/tmpsort1.txt。其他脚本在运行脚本后不存在。所有权限都是正确的


编辑:只是补充一下,我尝试过将sed和sort命令分离成单独的调用,得到了相同的结果。

您的Web服务器日志对错误有何评论?您可以打开STDERR打印到一个文件,以便更容易地检查错误。另外,您的$path中没有换行符,对吗?它不会显示在html输出中,但仍然会破坏您的命令。祝您好运。完全解决了,非常感谢。这个错误一直追溯到我对POST流的解析。我不知道“空字节”分隔符,这就是破坏路径的原因。我现在已经正确地解析了它,一切都很好。我明天会把答案写出来,把答案填进去。我真的很感激。将来使用perl而不是bash来做事情。。。。这个脚本中所做的一切都可以用perl完成
printed variables into the html page:
    /var/www/analyses/abun/100_genus_proportion sed 's/ (.*)//' /var/www/analyses/abun/100_genus_proportion | sort -k1 >/var/www/tmp/tmpsort1.txt /var/www/analyses/abun/100_genus_proportion
    /var/www/analyses/abun/113_genus_proportion sed 's/ (.*)//' /var/www/analyses/abun/113_genus_proportion | sort -k1 >/var/www/tmp/tmpsort2.txt /var/www/analyses/abun/113_genus_proportion
    /var/www/analyses/abun/55_genus_proportion  sed 's/ (.*)//' /var/www/analyses/abun/55_genus_proportion | sort -k1 >/var/www/tmp/tmpsort3.txt /var/www/analyses/abun/55_genus_proportion