如何在perl中执行cleartool命令

时间:2013-09-11 07:17:02

标签: perl clearcase cleartool

抱歉,如果它天真。我想编写一个简单的PERL脚本,它接受两个参数(Here Commit Labels),它们被作为cleartool命令的输入并为我提供合适的输出。 我的代码:  

#!/usr/bin/perl
$file1 = system('cleartool find . -version "lbtype($ARGV[0])" -print > filename1');
$file2 = system('cleartool find . -version "lbtype($ARGV[1])" -print > filename2');
$file3 = system('diff filename1 filename2 > changeset');
print $ARGV[0];
print $ARGV[1];
print $file3;
close filename1;
close filename2;
close changeset

#!/usr/bin/perl $file1 = system('cleartool find . -version "lbtype($ARGV[0])" -print > filename1'); $file2 = system('cleartool find . -version "lbtype($ARGV[1])" -print > filename2'); $file3 = system('diff filename1 filename2 > changeset'); print $ARGV[0]; print $ARGV[1]; print $file3; close filename1; close filename2; close changeset

输出现在是3个空文件:filename1,filename2和changeset。 但是我需要在两个提交的标签之间提交的文件。

任何人都可以了解我的错误!

提前致谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

$file1 = system("cleartool find . -version 'lbtype($ARGV[0])' -print > filename1");

而不是

$file1 = system('cleartool find . -version "lbtype($ARGV[0])" -print > filename1');

答案 1 :(得分:0)

您还有一些Perl包,以便于执行cleartool命令。

这样可以直接在数组中获取结果,而不是文件(即使你可以根据需要将该数组转储到文件中)

@res = ClearCase::CtCmd::exec("find . -version 'lbtype($ARGV[0])' -print");