在我的代码中,我加载了数据库文件,然后多次使用它们。
无论如何使用命令行在Perl中返回一个对象,然后在另一个命令中重用它?
例如:
perl -Mpckg -e '$v = pckg::foo();'
perl -Mpckg2 -e 'pckg2::foo(&v);'
答案 0 :(得分:3)
这不起作用。有几个原因。一个是当你开始第二个perl过程时,你的第一个perl过程就消失了。顺便说一句,你不能以这种方式使用引用。
答案 1 :(得分:3)
不,一个进程无法访问另一个进程的内存,尤其是那个甚至不再运行的进程,更不用说安全地使用它的变量。
您可能希望制作第一个脚本的服务器。它不会退出,而是继续运行并接受命令(例如,通过STDIN从其父级,或通过任何进程的套接字),它将使用它在首次启动时构造的对象进行解析和执行。
答案 2 :(得分:1)
你可以这样做但你必须使用临时文件来保存一个对象。
perl -MStorable -Mpckg -e '$v=pckg::foo(); Storable::store(\$v,file)'
您的对象$ v将在您必须运行此文件后写入文件:
perl -MStorable -Mpckg2 -e '$v = Storable::retrieve(file); unlink file; pckg2::foo($v)
因此,您可以将定义的对象提供给pckg2 :: foo()函数,之后将删除您的临时文件。就是这样。