2013-11-26 52 views
0

我可以將數組從perl傳輸到c而不需要向hdd任何東西扭動任何東西?我可以在perl中生成一個數組,將它保存在一個文件中並在c中讀取。但是隻能在內存中執行這個操作嗎?將數組從perl傳輸到c

+1

是的。你需要學習'XS',看看perlxstut:http://perldoc.perl.org/perlxstut.html - 或者你可以通過一個獨立的進程如memcached來傳輸數據 - 假如你很樂意擴展你的C代碼添加必要的客戶端和格式處理(在Perl中這更容易) –

+0

所以你有外部編譯的二進制文件,或者你想在'perl'中使用'C'? –

+0

我寧願有外部二進制文件。但是如果它是唯一的可能性,我也可以在perl中使用c。 – MaMu

回答

5

您可以使用Perl API Perl代碼和C之間的交談,並能在內存中的所有發生(不寫出中間形式到光盤中)。

各種調用處理陣列的細節是從perl.org avaialble。

請記住,雖然Perl數組的內容是Perl標量值(SV),而不是像C數組中的整數或指針,所以您必須使用Perl API將數據解碼爲可以在你的C程序中處理。

5

這聽起來不像是一個關於Perl或C的問題在所有,但一個關於如何從一個程序傳送信息到另一個問題(「我喜歡有外部的二進制文件。」)這就是所謂的跨過程通信(IPC)。

如果Perl程序啓動C程序,你可以通過使用參數列表中的數據。

如果C程序啓動Perl程序,您可以創建一個管道,並把它綁孩子的STDOUT。 Perl程序會將數據打印到STDOUT,C程序會從管道讀取數據。

如果沒有這兩個方案的推出等,插座是顯而易見的解決方案,但也有許多其他的可能性。