Schrift
[thread]4806[/thread]

delete newline: keine newline bei label textvariable



<< >> 7 Einträge, 1 Seite
Gast Gast
 2004-07-28 20:28
#42346 #42346
Hallo zusammen,
ich habe folgendes Problem wenn ich an ein Label eine Textvariable
übergebe bekomme ich eine newline drangehängt, sodaß das Label dann immer doppelt so hoch wird. z.b.
Code: (dl )
1
2
3
4
5
6
7
my $label_Rxp=$leftframe2->Label(
-textvariable => \$Rxpackets_text,
-anchor =>'e',
-relief => 'groove')
->pack(-fill => 'both');
.............
$Rxpackets_text=`/sbin/ifconfig ppp0 |grep "RX packets"|cut -d ":" -f 2 |cut -d " " -f 1`;

Frage wie kann ich die newline unterdrücken?
Danke schon mal im voraus
gruß nanook

[Edit]Code-Tags ergaenzt -Dubu-[/Edit]\n\n

<!--EDIT|Dubu|1091282580-->
esskar
 2004-07-28 20:47
#42347 #42347
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
my $label_Rxp=$leftframe2->Label(
-textvariable => \$Rxpackets_text,
-anchor =>'e',
-relief => 'groove')
->pack(-fill => 'both');
# .............
$Rxpackets_text=`/sbin/ifconfig ppp0 |grep "RX packets"|cut -d ":" -f 2 |cut -d " " -f 1`;
chomp $Rxpackets_text;
\n\n

<!--EDIT|esskar|1091033308-->
nanook
 2004-07-29 11:53
#42348 #42348
User since
2004-07-28
6 Artikel
BenutzerIn
[default_avatar]
thx für deine schnelle Antwort (19 min) essklar.
gruß nanook
Dubu
 2004-07-29 15:50
#42349 #42349
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=esskar,28.07.2004, 18:47]
Code: (dl )
1
2
3
# .............
$Rxpackets_text=`/sbin/ifconfig ppp0 |grep "RX packets"|cut -d ":" -f 2 |cut -d " " -f 1`;
chomp $Rxpackets_text;
[/quote]
Bah, so viele externe Programme in der Pipe. Und so umstaendlich ...

Code: (dl )
`/sbin/ifconfig ppp0` =~ /RX packets:(\d+)/ and $Rxpackets = $1;

Da gibt's auch kein Problem mit 'nem Newline. :p
nanook
 2004-07-30 12:14
#42350 #42350
User since
2004-07-28
6 Artikel
BenutzerIn
[default_avatar]
@dubu Ich perle erst seit 4 Tagen und bin  froh das überhaupt was klappt. ;-) Werde deinen Tipp sofort mal anwenden.
Gruß nanook
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-->
nanook
 2004-08-02 19:50
#42352 #42352
User since
2004-07-28
6 Artikel
BenutzerIn
[default_avatar]
@dubu, danke für deine ausführliche Erklärung. Ich habe mal etwas getestet. Und nach ca.100 Tests und 300 Fehlermeldungen glaube ich, Ansatzweise Licht ins Dunkel gebracht zu haben.
Gruß nanook
<< >> 7 Einträge, 1 Seite



View all threads created 2004-07-28 20:28.