Thread Konsolenbefehl als Subroutine (Substitution)
(5 answers)
Opened by JuMi2006 at 2012-09-21 10:37
Da nun klar ist das es funktioniert. Hier eine bessere Möglichkeit Hex-Strings zu konvertieren als mit $raw =~ s/([0-9a-f]{2})/chr( hex( $1 ) )/gie;:
Code (perl): (dl
)
1 2 3 4 5 my $hexstr = '0015070400a4'; my $raw =pack('H*',$hexstr); $hexstr=unpack('H*',$raw); pack und unpack wurden aus genau dem Grund in Perl eingebaut. Sie erlauben es komplexe Binäre Datenstrukturen zu erzeugen oder zu dekodieren. Das ist ähnlich zu "struct" aus C. 2012-09-23T19:48:19 JuMi2006 Ich verstehe die Frage nicht. Die Klammern haben nichts blockiert, die habe ich nur aus Gewohnheit gesetzt. Und die Kommandozeile wurde nicht richtig Interpretiert. system($str) (Aufruf mit nur einem Parameter) führt die Shell aus um die den String zu interpretieren. Bei binären Anteilen können seltsame Sachen passieren, speziell wenn ein "\00" auftaucht. Das wird manchmal fälschlicherweise als Stringende interpretiert. Zudem kann die Shell mit ihrer Zeichenkodierung dazwischen pfuschen und versuchen den Binärastring in eine andere Zeichenkodierung zu wandeln. Da ist das Senden von Zeichen über STDIN mit open Sicherer, da man mehr Kontrolle darüber hat wie die Zeichenketten behandelt werden. Will man noch mehr Kontrolle benutzte man die Module IPC::Open2 oder IPC::Open3 |