perl系统调用不调用ksh脚本

perl系统调用不调用ksh脚本,perl,system,ksh,Perl,System,Ksh,我试图从PERL脚本调用ksh脚本,但无法这样做 这是我的命令 $cmdString = “/path to script/lookupCal.ksh --service 2 -i /auto/dataprod/MSUkeyDates -f /auto/dataprod/HoursOfOpData --timezone America/New_York” system($cmdString) 我所做的只是发送一个MSYMBOLUKEY的输入文件,以获取一个输出文件,其中包含他们的操作时间,在k

我试图从PERL脚本调用ksh脚本,但无法这样做

这是我的命令

$cmdString = “/path to script/lookupCal.ksh --service 2 -i /auto/dataprod/MSUkeyDates -f /auto/dataprod/HoursOfOpData --timezone America/New_York”
system($cmdString)
我所做的只是发送一个MSYMBOLUKEY的输入文件,以获取一个输出文件,其中包含他们的操作时间,在ksh脚本运行后(我稍后在PERL代码中读取该脚本),这些操作时间将以小时为单位

当我从命令行运行它时,它会按预期工作,但是来自PERL脚本的调用似乎没有调用ksh脚本

我尝试添加一些调试语句

if(system($cmdTmpstr) != 0)
{
if ($? == -1) {
    print "failed to execute: $!\n";
}
elsif ($? & 127) {
    printf "child died with signal %d, %s coredump\n",
        ($? & 127),  ($? & 128) ? 'with' : 'without';
}
else {
    printf "child exited with value %d\n", $? >> 8;
}
}
这是我从日志中得到的输出

**child died with signal 11, without coredump**
有什么建议可以解决这个问题吗?

这有帮助吗

my @cmd = (
    "/path to script/lookupCal.ksh",
    "--service", 2,
    "-i", "/auto/dataprod/MSUkeyDates",
    "-f", "/auto/dataprod/HoursOfOpData",
    "--timezone", "America/New_York"
);
system @cmd;

可以说,您至少应该在正常事件过程中捕获并检查零/非零命令的状态。从系统命令运行时,命令的标准输入将是Perl的标准输入,命令的标准输出将是Perl的标准输出。您在Perl脚本上使用了哪些I/O重定向?例如,当使用来自/dev/null的输入或发送到/dev/null的输出运行lookupCal.ksh脚本时,脚本的行为是否正确?信号11通常为SIGSEGV,分段冲突;这是脚本中的一个问题。$cmdString=“。。。“;?OP中时髦的双引号字符是怎么回事?这是chr226吗?这是源代码的一部分吗?只是引号-想想当我粘贴herelookupCal.ksh时,当我使用/dev/null/dev/null的输出运行它时,格式发生了变化。我只是用一堆输入参数,最后,它写的数据库没有输入/输出重定向11是SIGSEGV。孩子死了,因为它做了一些错误。我试过你的建议,但它仍然不工作完全相同的功能。有什么特殊的我需要考虑时,运行一个KSH脚本从perl?我读到一些其他地方添加KSH - C,但没有修复。问题也来了