我需要从另一个脚本调用perl脚本。约束条件是,.pm文件中定义的全局变量很少在两个脚本之间是通用的,但是不共享局部变量。请让我知道如何做到这一点
答案 0 :(得分:3)
您是否有任何理由不能将第二个脚本中的代码作为第一个脚本中的函数调用?它应该作为一个单独的程序工作,从而共享全局变量。
检查How do I include functions from another file in my Perl script?以了解将一个脚本包含在另一个脚本中的各种方法。
答案 1 :(得分:0)
这取决于您希望如何工作。
如果您想在进程之间共享全局变量,那么您就可以进行“处理”了。您将需要共享内存(shmget
)或其他一些IPC(进程间通信)机制,请参阅perldoc perlipc
。有趣的部分是同步两个进程,因此他们不会尝试同时更新同一个进程。如果你能避免它,你真的不想去那里。
更简单的是,如果您只是想将这些全局值传递给第二个进程,那么它可以采用自己的副本。如果值是简单文本,那么您可以将它们作为命令行参数(从@ARGV
读取)或作为环境变量(%ENV
)传递。但是,如果它们更具异国情调,如引用或文件句柄,那么您需要找出不同的协议。假设您没有使用Windows,使用fork
创建子进程(您可能不需要exec
)可能是一种更简单的方法。
更好的是,考虑一下你是否确实需要复制或共享这些全局变量。