Команда 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