0

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

有没有办法在 Perl 中使用命令行返回一个对象,然后在另一个命令中重用它?

例如:

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

3 回答 3

3

这是行不通的。有几个原因。一个是当您启动第二个 perl 进程时,您的第一个 perl 进程就消失了。顺便说一句,您不能以这种方式使用引用。

于 2013-02-15T23:34:36.957 回答
3

不,一个进程无法访问另一个进程的内存,尤其是一个甚至不再运行的进程,更不用说安全地使用它的变量了。

您可能正在寻找制作第一个脚本的服务器。它不会退出,而是继续运行并接受命令(例如,通过其父进程的 STDIN,或通过任何进程的套接字),它将使用它在第一次启动时构造的对象解析和执行这些命令。

于 2013-02-15T23:52:26.427 回答
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() 函数,之后您的临时文件将被删除。就这样。

于 2013-02-16T00:11:40.113 回答