In Perl eine Zeichenkette analysieren, die durch Nullbytes getrennt ist

8

Das / proc Dateisystem enthält Details zu laufenden Prozessen. Unter Linux beispielsweise, wenn Ihre PID 123 lautet, wird die Befehlszeile dieses Prozesses in / proc / 123 / cmdline

gefunden

Die cmdline verwendet Null-Bytes zum Trennen die Argumente.

Ich vermute, dass entpacken verwendet werden sollte, aber ich weiß nicht wie, meine erbärmlichen Versuche, es mit verschiedenen Vorlagen ("x", "z", "C *", "H *" , "A *" usw.) hat einfach nicht funktioniert.

    
emx 18.06.2012, 14:24
quelle

4 Antworten

8

Ein einfacher split("%code%", $line) würde den Job gut machen.

    
lanzz 18.06.2012, 14:27
quelle
5

Sie können $/ auf "%code%" setzen. Beispiel:

%Vor%     
Vi. 18.08.2012 05:08
quelle
3

Ich empfehle eigentlich nicht, dies zu verwenden, aber nur zu Ihrer Information: Die Entpackungsvorlage, die funktioniert hätte, ist unpack "(Z*)*", $cmdline . Z packt und entpackt nullterminierte Strings, aber da es sich um einen Stringtyp, eine Zahl oder ein Stern nach einer Länge handelt, keine Wiederholung - Z* entpackt eins nullterminierte Zeichenfolge beliebiger Länge. Um jede Nummer davon zu entpacken, müssen Sie sie in Klammern einschließen und dann die Wiederholung auf die geklammerte Gruppe anwenden, wodurch Sie (Z*)* erhalten.

    
hobbs 18.06.2012 14:49
quelle
0

Dies kann mit den Befehlszeilenschaltern -l und -0 oder durch manuelle Änderung von $/ erfolgen.

-l und -0 sind von der Reihenfolge abhängig und können mehrfach verwendet werden.

Danke, dass Sie mich dazu inspiriert haben, perlrun zu lesen.

Beispiele:

%Vor%

.

%Vor%

.

%Vor%

Bündelungsprobleme:

%Vor%

.

%Vor%     
spazm 10.05.2017 22:27
quelle

Tags und Links