PurePerl »»» Implementierung von Perl in PB

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@Nero: Klasse, was Du da machst! :allright:

(auch danke (wie immer) an ts-soft! :-))

Kleiner Vorschlag: Kannst Du zu diesem Thema einen neuen Thread in
"Code, Tipps und Tricks" erstellen? Dann kannst Du im ersten Beitrag den
Code, so wie er z.Zt. ist, posten und dann diesen bei Bedarf aktualisieren.

Ich werde mich heute abend damit mal ein wenig intensiver beschäftigen.

So langsam wird das hier zu unübersichtlich ;-)

Grüße ... Kiffi
a²+b²=mc²
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

@Nero: Klasse, was Du da machst!
Danke
(auch danke (wie immer) an ts-soft!
Dem kann ich mir nur anschliesen :allright:
Kleiner Vorschlag: Kannst Du zu diesem Thema einen neuen Thread in
"Code, Tipps und Tricks" erstellen? Dann kannst Du im ersten Beitrag den
Code, so wie er z.Zt. ist, posten und dann diesen bei Bedarf aktualisieren.
Jo sollte möglich sein <)

Aber vorher noch ne kleine änderung :lol:
Ich habe die SplitToArray mal dahingehend geändert das sie über
Eval läuft das macht das ganze etwas kürzer und brauch nun die beiden
subs nicht mehr zum Daten Jonglieren.

Code: Alles auswählen

Procedure plStringToArray(MyArray.s(1), plHandle.l, String.s, Seperator.s = " ", BufferSize.l = 1024)
  Protected buffer.s = Space(BufferSize)

  plEval(plHandle, "@WorkArray = '';", 0)
  Rows.l = Val(plEval(plHandle, "@WorkArray = split(/"+Seperator+"/, '"+String+"');"))
  
  ReDim MyArray.s(Rows - 1)
  For x = 0 To Rows - 1
    MyArray(x) = plEval(plHandle, "@WorkArray["+Str(x)+"];")
  Next
EndProcedure
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

So noch schnell 3 mini proceduren erstellt

Code: Alles auswählen

; Verschlüsselt einen String
Procedure.s plCrypt(plHandle.l, String.s, Salt.s, BufferSize = 1024)
   ProcedureReturn plEval(plHandle, "crypt('"+String+"','"+Salt+"');", 1, BufferSize)
EndProcedure

; Löscht das letzte Zeichen eines String
Procedure.s plChop(plHandle.l, String.s, BufferSize = 1024)
   ProcedureReturn plEval(plHandle, "my $out = '"+String+"'; chop($out); return $out;", 1, BufferSize)
EndProcedure

; Gibt den Timestamp zurück
Procedure.s plTime(plHandle.l)
   ProcedureReturn plEval(plHandle, "time();", 1)
EndProcedure
example.pl

Code: Alles auswählen

  Debug plCrypt(plHandle, "ich bin ein test", "aber ich nicht")
  Debug plChop(plHandle, "das t ist weg ->t")
  Debug plTime(plHandle);
Nix tolles aber kann man ab und zu ja mal brauchen *g*
Mal schauen ob mir morgen noch paar vernünftige einfallen.
Werde im laufe des tagen mal das Packet updaten.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Nero hat geschrieben:So noch schnell 3 mini proceduren erstellt
Es geht voran :allright:
Nero hat geschrieben: Nix tolles aber kann man ab und zu ja mal brauchen *g*
Mal schauen ob mir morgen noch paar vernünftige einfallen.
Werde im laufe des tagen mal das Packet updaten.

Wie wäre es mit einem DeCrypt? Weil das Crypt ist so ziemlich sinnlos :lol:

PS: plTime entspricht Date(), ist also unnötig

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Wie wäre es mit einem DeCrypt?
SelfHTML.org hat geschrieben:Die Funktion crypt leistet nur eine einseitige Verschlüsselung. Eine entsprechende Entschlüsselungsmethode ist nicht bekannt. crypt ist daher nicht geeignet, um Kodier- und Dekodierverfahren zu realisieren.
crypt entspricht dem gleichnamigen Systemprogramm unter Unix und der gleichnamigen Funktion in C.
Wenn du das schaffst, dann spring ich aus dem Keller-Fenster! :lol:


Hier weitere Inspirationen, dort schlage ich immer nach, wennes um Perl geht: http://de.selfhtml.org/perl/index.htm

Klick auf "Funktionen", dort ist das, was wir hier implementieren. Dort kannst du dir auch noch mal nachlesen, was Hashes sind.


Frage: Wenn ich dieses Packet jetzt benutze, wie erreiche dann die Interpolation von Variablen in Strings?
Wenn ich das hier sehe, dann glaube ich, dass es gar nicht geht:
> plEval(plHandle, "@WorkArray = '';", 0)
(Hier wurden 'einfache Anführungszeichen' verwendet!)

Beispiel:

Code: Alles auswählen

my $wetter="sonnig";
print "Es ist $wetter, nicht?"; # Wird interpoliert, da doppelte "Anf.zeich." verwendet

print 'Es ist $wetter, nicht?'; # Wird nicht interpoliert, da einfache 'Anf.zeich.' verwendet
Beispiel 1 ergibt: Es ist sonnig, nicht?
Beispiel 2 ergibt: Es ist $wetter, nicht?

Von den Anführungszeichen hängt es ab, ob die Interpolation durchgeführt wird, oder nicht. Müsste ich jetzt Chr(34) in Zusammenhang mit dem Packet verwenden oder wie?

@ Nero: Soll das hier eine Array-Deklaration sein?
> plEval(plHandle, "@WorkArray = '';", 0)
Warum nicht
>> plEval(plHandle, "my @WorkArray;", 0)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Wenn du das schaffst, dann spring ich aus dem Keller-Fenster! :lol:
Wenn man es nicht DeCrypten kann, ist es die sinnloseste Funktion die ich
je gesehen habe.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Dann findest du MD5 also auch sinnlos? :wink:

crypt ist gedacht, um Passwörter so zu verschlüsseln, wie sie auch in .htaccess-Dateien gespeichert werden. Du darfst bei der ganzen Sache hier nicht vergessen, dass Perl eigentlich für die Web-Umgebung erschaffen worden ist. Und dort muss man eben auch öfter mal Passwörter vergleichen. :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Nero
Beiträge: 285
Registriert: 08.11.2004 01:50

Beitrag von Nero »

dass Perl eigentlich für die Web-Umgebung erschaffen worden ist.
o_O das stimmt aber mal nicht :mrgreen:

Also das mit den "" und '' ist so ne sache da PB soweit mir bekannt ist es nicht zuläst \" innerhalb eines strings zu schreiben daher bleibt wohl wirklich nur Chr(34)

Warum nicht
plEval(plHandle, "my @WorkArray;", 0)
Hast recht ^^
Wenn man es nicht DeCrypten kann, ist es die sinnloseste Funktion die ich je gesehen habe.
Ist halt nen einweg Crypt man könnte genausogut den CRC oder MD5
fingerprint nehmen da die eh in PB drin sind *g*[/code]
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Nero hat geschrieben: Also das mit den "" und '' ist so ne sache da PB soweit mir bekannt ist es nicht zuläst " innerhalb eines strings zu schreiben daher bleibt wohl wirklich nur Chr(34)
Ich finde #DQUOTE$ besser, oder Du nutzt folgenden
Tip von mir:
http://www.purebasic.fr/german/viewtopi ... esequenzen
Dann kannste mit \q für " arbeiten :)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> das stimmt aber mal nicht
Stimmt, da war doch was... Aber was? Ich meine mal ein Spiel o. Ä. gesehen zu haben, das kompiliert und nicht interpretiert wurde. In Perl geschrieben.

Aber wie dem auch sei, hinsichtlich dieser crypt-Funktion sollte diese Aussage eigentlich stimmen. Denn was willste mit ner .htaccess bei irgendeiner fertig kompilierten EXE? :lol:


> da PB soweit mir bekannt ist es nicht zuläst \" innerhalb eines strings zu schreiben
Wie gesagt, PB ist eine Programmiersprache und Perl eine Skriptsprache.
Skripte werden interpretiert, daher kann man Perl anders auslegen sodass man vielfältige Funktionsmöglichkeiten hat. Einem Interpreter wäre es egal, ob ich (mein bekanntes Beispiel) or oder || schreibe, and oder &&.
PB hingegen ist da strikter.


> Hast recht
Danke. :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten