我下面的代码,我可以运行 $retCode = ClearCase($cmd);没有错误,但运行时返回 65280: $retCode = ClearCase($logcmd);我在 XP 和 Windows 2003 服务器上尝试过,结果相同,都使用 ActiveState Perl v5.14.2。

这段代码在 2 年前在其他地方工作。

谢谢
吉荣

  $g_HPPC_DEV_DRIVE =  "M";
  $g_HPPC_DEV_VIEW = "bldforge_AOMS_DEV";
  $g_logfile = "logfile.txt";

  $cmd = "startview $g_HPPC_DEV_VIEW";
  $logcmd = $cmd . " >> $g_logfile 2>>&1";

  $targetDir = $g_HPPC_DEV_DRIVE . ":\\" . $g_HPPC_DEV_VIEW;
  print "\$targetDir = $targetDir\n";
  print "Starting view .......\n";
  #$retCode = system("cleartool startview bldforge_AOMS_DEV >> logfile.txt");
  #$retCode = `cleartool startview bldforge_AOMS_DEV`;

  $retCode = ClearCase($logcmd);
  #$retCode = ClearCase($cmd);



sub ClearCase
{
  my $retCode = 0;
  my $args = $_[0];

  my $cmd = "cleartool " . $args;
  $retCode = Execute($cmd);

  return $retCode;

}

sub Execute
{
  my $retCode = 0;
  my $cmd = $_[0];

  if ($g_HPPC_BUILD_SIMULATION ne "Y")
  {

     print("Execute() Running...:   $cmd\n");
     $retCode = system($cmd);
     #$retOut = `$cmd`;
     #$retCode = $?;
     #print("Command execute output: $retOut\n");
  }
  else
  {
     print("Execute() *** SIMULATION:   $cmd\n");
  }

  print("Execute() retCode = $retCode, $cmd\n");

  return $retCode;
}

最佳答案

使用 cleartool 时,最好确保使用 ccperl ( now called ratlperl ),ClearCase 打包的 perl,而不是 latest Active Perl ( which actually is the 5.14.2 )。

因此,不要默认启动 perl 脚本,而是选择 perl.exe 中可用的第一个 %PATH% ,尝试使用 perl included with ClearCase 之一调用它:

  • ratlperl :在 C:\Program Files\Rational\Common 中。
  • 或遗留的 ccperl :在 C:\Program Files\Rational\ClearCase\bin 中。

  • 并查看错误是否仍然存在。

    根本原因是 PATH 问题:有几个 perl 可用:
  • 来自 Rational ClearCase 的那些
  • 来自 Active Perl 的一个

  • 通过确保 PATH 只引用一个 perl(ClearCase 附带的那个),脚本可以成功启动。

    关于windows - Perl system() 调用失败,返回码 65280,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11989196/

    10-14 16:56
    查看更多