Perl在命令行中返回对象

时间:2013-02-15 23:25:19

标签: perl cmd

在我的代码中,我加载了数据库文件,然后多次使用它们。

无论如何使用命令行在Perl中返回一个对象,然后在另一个命令中重用它?

例如:

perl -Mpckg -e '$v = pckg::foo();'
perl -Mpckg2 -e 'pckg2::foo(&v);'

3 个答案:

答案 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()函数,之后将删除您的临时文件。就是这样。