【发布时间】:2012-06-13 15:37:37
【问题描述】:
我一直在向现有项目添加一个插件,该插件与 perl 脚本绑定在一起。我正在尝试将我的 C 程序添加到 perl 脚本中以生成输出文件,但输出是垃圾或丢失。
我的可执行文件名为 Interpolate,当它与 perl 脚本位于同一文件夹时,它工作得很好
./Interpolate inv.tracking_log
是命令的运行方式。它应该生成一个名为tmp.log 的中间文件和一个名为out.txt 的最终文件。当我在目录中运行它时,它运行良好,两个文件都应该是。
然后我在 perl 脚本中添加了一个系统调用(我几乎(如果)知道 perl):
print("./Interpolate $inVideoFile"); //prints like the command (just a test)
my $interCall = system("./Interpolate $inVideoFile");
从 perl 脚本中运行它时,tmp.log 文件大部分是垃圾,而 out.txt 完全丢失了。我确实意识到 out 很可能会丢失,因为它依赖于 tmp.log 文件。是否有我在某处遗漏的 perl 'gotchya'?
【问题讨论】:
-
不确定但尝试使用绝对路径运行。
-
尝试 oneliner: perl -e "system("./Interpolate inv.tracking_log");'并检查结果。如果不好,则问题有更深层次的根源,如果正常,则问题出在 perl 程序的其余部分。
-
效果很好。如果我有点想不通,我会试着找到今天写剧本的人。谢谢
-
尝试用逗号分隔命令和参数:my $intercall = system("./Interpolate", $inVideoFile");
-
你从哪里调用 perl 脚本?确保您的工作目录相同。尝试在您的
system呼叫上方添加print `cmd`以了解您的位置。