在我的代碼中,我加載數據庫文件,然後多次使用它們。命令行中的Perl返回對象
有沒有辦法在Perl中使用命令行返回對象,然後在另一個命令中重用它?
例如:
perl -Mpckg -e '$v = pckg::foo();'
perl -Mpckg2 -e 'pckg2::foo(&v);'
在我的代碼中,我加載數據庫文件,然後多次使用它們。命令行中的Perl返回對象
有沒有辦法在Perl中使用命令行返回對象,然後在另一個命令中重用它?
例如:
perl -Mpckg -e '$v = pckg::foo();'
perl -Mpckg2 -e 'pckg2::foo(&v);'
你可以做到這一點,但你必須使用臨時文件保存對象。
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的()函數之後你的臨時文件將被刪除。就這樣。
這可不行。有幾個原因。一個是,當你開始第二個進程時,你的第一個perl進程就不存在了。順便說一下,你不能以這種方式使用引用。
有沒有辦法解決這個問題?我從Java調用perl命令,這就是爲什麼我使用系統調用 – user1615551 2013-02-15 23:41:48
不。我認爲你不能這樣做。 – smartmeta 2013-02-15 23:44:22
但是你在做什麼?你在Java中做什麼,在Perl中做什麼?爲什麼?也許我們會爲您的問題找到其他解決方案。 – smartmeta 2013-02-15 23:45:58
我試過了您的代碼從pckg :: foo()返回一個字符串,但這就是我得到的SCALAR(0x89b5f10)。我如何獲得對象的價值? – user1615551 2013-02-16 00:47:45
我不明白什麼'對象的價值'的意思,但我想你必須嘗試使用'pckg2 :: foo($$ v)' – edem 2013-02-16 00:57:59
是的我的意思是字符串的值不是引用。謝謝你的工作。 – user1615551 2013-02-16 01:02:52