Thread delete newline: keine newline bei label textvariable (6 answers)
Opened by Gast at 2004-07-28 20:28

Dubu
 2004-07-31 18:06
#42351 #42351
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Na, das ist doch schon nicht schlecht fuer 4 Tage. :)
Willkommen im Club!

Und was die Zeile angeht: Perl ist eben gut darin, grep(1), cut(1) und vieles anderes zu ersetzen.

Wenn man dann sowieso ein Perl-Skript schreibt, sollte man moeglichst viel von perl selber erledigen lassen. Denn wenn das Skript einmal laeuft, ist es wesentlich effizienter, Perl-eigene Konstrukte zu benutzen, als das ueber mehrere extern aufgerufene Programme machen zu lassen.

Viel Spass noch.

PS: Dann koennte ich diese eine Zeile aber auch mal erlaeutern, damit du was davon hast:
Code: (dl )
`/sbin/ifconfig ppp0` =~ /RX packets:(\d+)/ and $Rxpackets = $1;

Teilen wir die Zeile erstmal in zwei Teile auf, getrennt durch das "and".
Links steht
`/sbin/ifconfig ppp0` =~ /RX packets:(\d+)/
und rechts
$Rxpackets = $1

Da das "and" eine logische Und-Verknuepfung mit niedriger Prioritaet ist, wird erst der linke Teil komplett ausgewertet, und wenn dieser einen wahren Wert ergibt, die Zuweisung $Rxpackets = $1 ausgefuehrt.

Im linken Teil wird das externe Kommando "/sbin/ifconfig ppp0" aufgerufen und das Ergebnis zurueckgeliefert. Nur speichere ich es gar nicht erst in einer Variablen, sondern wende einen regulaeren Ausdruck darauf an. Dazu ist der Operator "=~" da.

Rechts dieses sogenannten Binde-Operators steht der regulaere Ausdruck, eingefasst in Schraegstriche: "RX packets:(\d+)". Der Text vorne ist klar, dahinter folgt "\d+", d.h. eine Folge von mindestens einem Ziffernzeichen. Die runden Klammern dienen dazu, dass Perl mir eben diese Ziffernfolge in der Variablen $1 speichert.

Der linke Ausdruck bedeutet also: Rufe das externe Programm "/sbin/ifconfig" mit Parameter "ppp0" auf, und pruefe dann, ob in der Ausgabe der Text "RX packets:" gefolgt von einer oder mehr Ziffern vorkommt. Wenn ja, speichere diese Ziffernfolge in $1.

Wenn der Pattern-Match klappt, also der Ausdruck gefunden wurde, dann wird die Zuweisung rechts ausgefuehrt. Damit landet dann die Ziffernfolge in der Variablen $Rxpackets.

Alles klar? :)\n\n

<!--EDIT|Dubu|1091283919-->

View full thread delete newline: keine newline bei label textvariable