当我在命令行中使用以下命令时,它给出了非集成更改列表的列表.
p4 interchanges -t $branch1 @$date1, @$date2 $branch2 > changes.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我在Perl脚本中使用此命令时,如下所示,它不提供输出:
$cmd = system ("p4 interchanges -t $branch1 @$date1, @$date2 $branch2 > changes.txt");
Run Code Online (Sandbox Code Playgroud)
命令行中的输出消息是一些错误,如下所示:
branch1, - all revision(s) already integrated.
Run Code Online (Sandbox Code Playgroud)
问题是因为date1和date2之间使用了逗号?如何在Perl脚本中使用此命令?
这就是为什么打开strict和warningspragma 是如此重要.字符串"@ $ date1"并不代表您的想法.它试图取消引用$data1作为一个数组.因为strict不是它所以将内容$date1视为一个象征性的参考.如果您已打开,strict则会看到如下错误消息:
Can't use string ("2010-08-30") as an ARRAY ref while "strict refs" in use at script.pl line 10.
Run Code Online (Sandbox Code Playgroud)
你应该这样说:
system "p4 interchanges -t $branch1\@$date1,\@$date2 $branch2 > changes.txt";
if ($?) {
die "saw exit code: ", $? >> 8;
}
Run Code Online (Sandbox Code Playgroud)
如果你希望你也可能有问题$branch1,$date1等是shell变量,而不是Perl的变量.在这种情况下,你应该说:
system "p4 interchanges -t $ENV{branch1}\@$ENV{date1},\@$ENV{date2} $ENV{branch2} > changes.txt";
if ($?) {
die "saw exit code: ", $? >> 8;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |