2016-06-21 19 views
1

Ich habe ein in Perl geschriebenes Legacy-System, das ich von etwas moderneren zu migrieren beginnen würde. Python ist meine persönliche Vorliebe, aber das Team ist sehr JS orientiert.Rufen Sie Node.js (oder Python) von Perl

Ich möchte verschiedene Perl-Module als Schritt eins des Prozesses zu Knoten oder Python migrieren. Frühere Forschung beinhaltet Googeln (alle Ergebnisse in umgekehrter Richtung) und Stack-Overflow (nichts Relevantes). Ich bin mir bewusst, backticks, aber fragte mich, ob es etwas strukturierter als JNI oder wenn jemand eine alternative und elegantere Lösung hat.

+0

Sie können sowohl Python als auch JavaScript innerhalb von Perl, als Teil des Perl laufen Programm. Das ist vielleicht nicht das schnellste, aber könnte funktionieren. Andernfalls müssen Sie klare Schnittstellen definieren und verschiedene Programme miteinander kommunizieren lassen. Dies ist jedoch ein wenig breit für Stack Overflow. Sie könnten eine gute Antwort auf programmers.se bekommen, wenn Sie die Frage zu etwas wie "Welche Strategie kann ich anwenden, um eine Anwendung Schritt für Schritt von Sprache 1 zu Sprache 2 zu portieren, während sie in der Produktion bleibt" umformulieren und dann in eine neue Form bringen Einzelheiten. – simbabque

+2

Ach, warum hältst du Perl nicht für modern? : P – simbabque

+0

Ich gebe zu, mein Urteil über "modern" ist sehr subjektiv. Perl ist vor ein paar Jahren in Ungnade gefallen und ich fand es sehr "anfängerunfreundlich". Ich mag auch den Mangel an Funktionsprototypen nicht. Meistens benutzen die Leute es heute nicht, also müssen neue Teammitglieder es lernen oder dafür rekrutiert werden (was schwieriger als für python/node ist). –

Antwort

3

Für Python, würde ich Inline-Python-Modul von CPAN recommed: http://search.cpan.org/dist/Inline-Python/Python.pod

Beispiel:

use Inline Python => <<END; 

    def Foo(): 
     class Bar: 
      def __init__(self): 
       print "new Bar()" 
      def tank(self): 
       return 10 
     return Bar() 

    END 

    my $o = Foo(); 
    print $o->tank(), "\n";