이 perl 스크립트의 목적은 먼저 .cpp
파일을 리팩터링 한 다음 전체 패키지를 컴파일하는 것입니다. 모두 잘되면 다음 파일로 이동하고 그렇지 않으면 backup
디렉토리의 원본 파일을 바꿉니다. 다음은 패키지의 makefile
을 실행하기위한 펄 스크립트입니다.`make '오류를 잡는 중 문제가 발생했습니다
@lcpp = `ls *.cpp`;
chomp(@lcpp);
foreach (@lcpp) {
print "processing file $_ ...";
`cp demac_dir/$_ .`;
if(2 == `make`) {
print "\n\t\t\tError in the file\n";
`cp backup/$_ .`;
print "reverting back to the original file and building the package again";
`make`;
}
else {#when successfully compiled
print "successfully compiled the package with file $_";
}
}
컴파일러 오류가있는 '리팩터링 된'파일이 생길 때까지 스크립트가 실행됩니다. 스크립트가 make
에 의해 반환 된 오류를 캡처 할 수 없습니다. 또는 나는 뭔가를 놓친다.
왜 역 따옴표 그냥 부르지 ['system'] (http://perldoc.perl.org/functions/system.html)? –
ok ... 나는 지금 system()을 시도하고있다. –
이 많은 시스템 호출로 perl을 사용하는 것이 과잉이라고 생각된다. 첫 번째 라인을'my @lcpp = glob "* .cpp";'로 바꾸면, chomp를 할 필요없이 멋진 배열을 얻을 수 있습니다. [File :: Copy] (http://search.cpan.org/perldoc?File::Copy)는 복사/이동 명령입니다. 나는 거기에 뭔가 좋은 걸로 의심합니다. – TLP