Also wir haben uns das ganze etwas schwer gemacht ist mir aufgefallen
Habe mir mal die Dok vom ActiveState Perl durchgeschaut und hab auch etwas gefunden
Und zwar ist alles möglich mit der PerlEz.dll
Das einzigste problem was ich damit habe ich weis nicht unter welcher
Liezens die läuft finde dahingehen auch nicht wirklich was.
Aber da Perl GNU ist hoffe ich mal ist es diese auch.
Habe mal kleinen Versuch mit dem StringField gemacht
Code: Alles auswählen
Enumeration
#Perl
EndEnumeration
Prototype.l PerlEzCreate(lpFileName, lpOptions);
Prototype.l PerlEzDelete(hHandle);
Prototype.l PerlEzCall4(hHandle, lpFunction, lpBuffer, dwBufSize, lpFormat1, lpVoid1, lpVoid2, lpVoid3, lpVoid4);
If OpenLibrary(#Perl, "PerlEz.dll")
PL_Create.PerlEzCreate = GetFunction(#Perl, "PerlEzCreate")
PL_Close.PerlEzDelete = GetFunction(#Perl, "PerlEzDelete")
PL_Call.PerlEzCall4 = GetFunction(#Perl, "PerlEzCall4")
Else
MessageRequester("Fehler", "PerlEz.dll konnte nicht geöffnet werden!")
EndIf
test_pl.s = "test.pl"
plHandle.l = PL_Create(@test_pl,0)
*buffer = AllocateMemory(1024)
function$ = "stringfield" ; Die Sub die wir aufrufen wollen
format$ = "sssi" ; Die Parameter Formatierung
text$ = "hallo ich bin der text" ; param 1
field$ = "2" ; param 2
seperator$ = "ich" ; param 3
dump = 0 ; param 4 <- der ist nur nötig weils keinen call mit 3 params gibt *g*
Debug PL_Call(plHandle, @function$, *buffer, 1024, @format$, @text$, @field$, @seperator$, @dump)
Debug PeekS(*buffer)
PL_Close(plHandle)
CloseLibrary(#Perl)
Man brauch aber nun noch die test.pl.
Da ist aber nur folgendes drinn
Code: Alles auswählen
#!
sub stringfield { return 0 || (split(("$_[2]"||" "), $_[0]))[$_[1] - 1] if($_[1]); }
Und man muß natürlich die PerlEz.dll aus dem Perl/bin/ ordner mit ins verzeichniss kopieren.
Das ganze könnte mann wen man es in Proceduren packt noch vereinfachen damit man nicht immer alle Parameter extra in variablen schreiben muß