2017-07-14 135 views
-1

我在需要調用另一個程序「b.pl」的終端上運行perl程序「a.pl」,然後將環境變爲tcl shell。程序「b.pl」設置了我必須在主程序「a.pl」中使用的環境變量,之後我需要在由「b.pl」創建的tcl環境中運行新命令。請看下面的例子中父進程與子進程之間的通信 - Perl

程序:a.pl

#!/usr/intel/bin/perl -w 
    use strict; 
    use warnings; 

    #turns it to a tcl shell and sets environment variable VERSION 
    system ("./b.pl"); 

    system ("source <tclExecutable> -version $VERSION"); 

第二系統命令不執行,直到我在終端手動退出TCL殼。我已經看過叉子並打開一個管道,但我不知道該如何去做。我需要在第一個系統命令打開的tcl shell中執行第二個命令。我該如何做這項工作?

+1

你不能在一個子進程中設置的父的環境變量。 – choroba

+0

* b.pl如何設置env變量? –

+2

這是運行我見過的Tcl腳本的最奇怪的方式。好吧,無論如何,本週... –

回答

0

您可以使用require在「a.pl」內運行b.pl。它可以提供你想要的簡單腳本。

a.pl

use strict; 
use warnings; 

our $Version; 
require "/.../b.pl"; # full path to b.pl script 
print "Version: $Version\n"; 

b.pl

use strict; 
use warnings; 

our $Version; 
$Version = "YES!";