在我的代码中,我加载数据库文件然后多次使用它们。
有没有办法在 Perl 中使用命令行返回一个对象,然后在另一个命令中重用它?
例如:
perl -Mpckg -e '$v = pckg::foo();'
perl -Mpckg2 -e 'pckg2::foo(&v);'
这是行不通的。有几个原因。一个是当您启动第二个 perl 进程时,您的第一个 perl 进程就消失了。顺便说一句,您不能以这种方式使用引用。
不,一个进程无法访问另一个进程的内存,尤其是一个甚至不再运行的进程,更不用说安全地使用它的变量了。
您可能正在寻找制作第一个脚本的服务器。它不会退出,而是继续运行并接受命令(例如,通过其父进程的 STDIN,或通过任何进程的套接字),它将使用它在第一次启动时构造的对象解析和执行这些命令。
您可以这样做,但您必须使用临时文件来保存对象。
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() 函数,之后您的临时文件将被删除。就这样。