2013-01-03 81 views
-3

我需要從另一個腳本調用perl腳本。約束條件是,在.pm文件中定義的很少全局變量在兩個腳本之間是通用的,但本地變量不共享。請讓我知道如何做到這一點從另一個腳本調用perl腳本

+1

這完全不清楚你實際需要什麼。請詳細說明。 – Flimzy

+0

你需要包含一些代碼!當你確實想分享你的代碼時,請編輯你的問題並更新它。通知我們其中一個然後重新打開您的問題。如果需要格式化或任何其他幫助,我們可以爲您提供幫助。 (只需輸入您的相關代碼,我們將爲您設置格式) – gideon

+0

抱歉沒有完成我的問題。示例代碼如下: caller.pl 使用my :: module; $ global_var = 1; #需要改變這個系統(「called.pl」); print $ global_var; called.pl 使用my :: module; $ global_var = 2; 我希望運行caller.pl的輸出爲2.請注意global_var在我的::模塊 – user1912265

回答

0

這取決於你想如何工作。

如果你想分享進程之間的全局變量,那麼你在一個「治療」。您需要共享內存(shmget)或其他IPC(進程間通信)機制,請參閱perldoc perlipc。有趣的部分是同步這兩個進程,所以他們不會嘗試同時更新相同的東西。如果你能避免它,你真的不想去那裏。

更簡單的是,如果您只是想將這些全局值傳遞給第二個進程,以便它可以採用自己的副本。如果這些值是簡單文本,則可以將它們作爲命令行參數(從@ARGV讀取)或環境變量(%ENV)傳遞。但是,如果它們更具異國情調,如引用或文件句柄,那麼您需要找出不同的協議。使用fork(您可能不需要exec)創建子進程可能是一種更簡單的方法,假設您未使用Windows。

更好的是,考慮一下你是否確實需要複製或共享這些全局變量。