2009-07-13 4 views
2

Weiß jemand, ob es möglich ist, ein Perl-Sub aus Mono in C# aufzurufen? Dies ist auf einem Linux-Rechner.Wie kann ich einen Perl-Interpreter in mein C# -Programm mit Mono unter Linux einbetten?

Vielleicht DllImport? Wir wollen auch vermeiden, dass jedes Mal, wenn möglich, Perl geladen wird.

+0

Ich möchte auch vermeiden, Perl nur über Process.Start auszuführen. Ich denke, es wäre schwierig Subs zu nennen, die Arrays oder Hashes auf diese Weise zurückgeben. Das Sub, das ich aufrufen möchte, ist spezifisch für ein vorhandenes System und gibt SQL-Ergebnisse in mehrdimensionalen Arrays/Hashes zurück. – jonathanpeppers

Antwort

3

Interop funktioniert gut mit Mono unter Linux, um C-Code aufzurufen. So würde ich betrachten, dass Sie perlembed betrachten. Anstelle eines C-Programms müssen Sie eine gemeinsame C-Bibliothek erstellen. Für Interop gibt es mehrere gute Guides - ein potentieller Fehler ist die Größe der Datentypen, weil Sie wirklich plattform-/CPU-abhängig sind. Lassen Sie mich wissen, wenn Sie irgendwo detailliertere Informationen benötigen.

+0

Das wird mich definitiv ins Rollen bringen. Ich werde wahrscheinlich zurück, wenn irgendwelche Fallstricke sind. – jonathanpeppers

3

This thread on PerlMonks könnte helfen.

+0

Dieser Beitrag schlägt vor, sie haben es nicht auf Linux versucht, hat jemand es versucht? Ich frage mich, ob das Microsoft COM-Objekt, das sie in dem Beispiel verwenden, sogar unter Linux funktioniert. Wir werden es versuchen, nur fragen, ob jemand schon hat. – jonathanpeppers

+1

@ Jonathan das COM-Objekt existiert nicht einmal unter Linux. Sie haben Linux in Ihrer Frage nicht erwähnt. Vielleicht sollten Sie aktualisieren, um zu klären. –

+0

Ich war der Meinung, dass die Erwähnung von Mono würde davon ausgehen, dass ich mich auf Linux beziehen. – jonathanpeppers