2013-01-03 78 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。

更好的是,考虑一下你是否确实需要复制或共享这些全局变量。