要编译C++
项目,我想编写一个perl
脚本来编译我的程序,看看编译是否出错。如果编译器发出任何编译错误,我将需要执行其他任务。
perl
脚本将是这样的:
@l1 = `find . -name '*.c'`;
@l2 = `find . -name '*.cpp'`;
@l3 = `find . -name '*.cc'`;
my $err;
my $FLAGS = "-DNDEBUG"
push(@l , @l1, @l2, @l3);
chomp(@l);
foreach (@l) {
print "processing file $_ ...";
$err = `g++ $_ $FLAGS`;
if($err == something) {
#do the needful
}
}
那么什么应该 ?
答案 0 :(得分:6)
您应该在$?
之后检查g++...
。
<强> perlvar 强>
$?
最后一个管道关闭,反引号(``)命令返回的状态, 成功调用wait()或waitpid(),或者从system()操作符调用。
子流程的退出值实际为
($?>> 8)
因此,您应该检查g++
是否已返回0
(成功)或non-zero
。
if ($? >> 8) {
/* Error? */
}
答案 1 :(得分:1)
IPC :: System :: Simple / IPC :: Run3使这更容易