Команда Perl backticks `` не работает в хуках ClearQuest v8

test_chdir.pl:

my $view_dir = "M:\\ccadm01_UARK_DEV";
print ("\$view_dir = $view_dir\n");       
chdir($view_dir);
$cmd = `cd`;
print ("\$cmd = $cmd");
$cmd = "cleartool describe -fmt \"%[versions]Cp\" activity:USR0200004985\@\\Unix_PVOB";
print ("\$cmd = $cmd\n");       
$output = qx{$cmd};
print ("\$output = $output\n");

Если я запускаю его из командной строки на том же сервере, он дает правильные результаты:

 D:\CCSTG\Unix>cqperl test_chdir.pl
 $view_dir = M:\ccadm01_UARK_DEV
 $cmd = M:\ccadm01_UARK_DEV
 $cmd = cleartool describe -fmt "%[versions]Cp" activity:USR0200004985@\Unix_PVOB
 $output = M:\ccadm01_UARK_DEV\Unix_AVOB\UARK_src\CNTL\NOPROC\denise6.ctl@@\main\UARK_PRD\UARK_DEV\13

 D:\CCSTG\Unix>perl test_chdir.pl
 $view_dir = M:\ccadm01_UARK_DEV
 $cmd = M:\ccadm01_UARK_DEV
 $cmd = cleartool describe -fmt "%[versions]Cp" activity:USR0200004985@\Unix_PVOB
 $output = M:\ccadm01_UARK_DEV\Unix_AVOB\UARK_src\CNTL\NOPROC\denise6.ctl@@\main\UARK_PRD\UARK_DEV\13

Однако, когда я запускаю точно такой же код внутри ловушки CQ, как показано ниже, он выдает пустые выходные данные. У меня есть кнопка записи вызова скрипта DeployPAT, а она в свою очередь вызывает Deploy:

 sub basecmactivity_Deploy {
     my($result);
     my($param) = @_;
     # record type name is BaseCMActivity

     $session->OutputDebugString ("Start Deploy ...\n");
     my $view_dir = "M:\\ccadm01_UARK_DEV";
     $session->OutputDebugString ("\$view_dir = $view_dir\n");        
     chdir($view_dir);
     $cmd = `cd`;
     $session->OutputDebugString ("\$cmd = $cmd\n");
     $cmd = "cleartool describe -fmt \"%[versions]Cp\" activity:USR0200004985\@\\Unix_PVOB";
     $session->OutputDebugString ("\$cmd = $cmd\n");

     $output = qx{$cmd};
     $session->OutputDebugString ("\$output = $output\n");
     $session->OutputDebugString ("End Deploy ...\n");

     return $result;
 }

 sub basecmactivity_DeployPAT {
     my($result);
     my($param) = @_;
     # record type name is BaseCMActivity

     $session->OutputDebugString ("Start DeployPAT ...\n");
     $result = $entity->FireNamedHook("Deploy","");
     $session->OutputDebugString ("End DeployPAT ...\n");

     return $result;
 }
Output from dbwin32:

 16840: Start DeployPAT ...
 16840: Start Deploy ...
 16840: $view_dir = M:\ccadm01_UARK_DEV
 16840: $cmd = 
 16840: $cmd = cleartool describe -fmt "%[versions]Cp" activity:USR0200004985@\Unix_PVOB
 16840: $output = 
 16840: End Deploy ...
 16840: End DeployPAT ...

Поддержка IBM ничего не помогает после двух месяцев, и они говорят: "DBWIN32 отключает вывод, прежде чем вы сможете увидеть вывод, и я смогу увидеть его в трассировке". Что, черт возьми, это значит и как след может помочь мне? Мой более поздний код манипулирует этими выводами. Если вывод пуст, как я могу продолжить код?

Мы переходим с v7 на v8, и эта проблема полностью заблокировала нас. Кто-нибудь может поделиться некоторыми огнями здесь? Спасибо Jirong

0 ответов

Другие вопросы по тегам