Es werden zuerst die ganzen Pings gemacht, und dann wird erst der Ticker geöffnet... Da Du den Text immer auf den "aktuellen" Host änderst - und ganz zum Schluss ist pc.de der aktuelle host, siehst du immer nur pc.de...
Wenn Du alle sehen willst, hast Du zwei Möglichkeiten:
1.) Hier siehst Du alle hosts im Ticker!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl
use Tk;
$MW = MainWindow->new(-title => "Reach-Ticker by Dataabbel");
$MW->resizable(0,0);
$MW->geometry("300x30+10+20");
$MW->repeat(90, \&tick);
$LabelW = $MW->Label(-textvariable => "")->pack(-expand => 1, -fill => 'x'); # leeres label erzeugen
@data = qw (www.petra-hille.de www.google.de www.yahoo.de www.perl-community.de);
foreach $host (@data) {
$| = 1;
@pin = `ping -c 1 $host`;
if ($pin[4] =~ /received/) {
chomp ($host);
$text .= $host . " received ";
$LabelW->configure(-textvariable => ""); # sollte das Label vorsichtshalber löschen, glaube unsinnig
$LabelW->configure(-textvariable => \$text); # hier sollte nu der aktuelle host stehen,steht aber nur letztes element aus @data
}
}
MainLoop;
sub tick {
$width = $LabelW->cget('width');
return unless $width < length $text;
$text = substr($text,1,length($text)-1) . substr($text,0,1);
}
2.) - allerdings nicht als Ticker; einfach mal ausprobieren -
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl
use Tk;
use strict;
use warnings;
my $mw = MainWindow->new(-title => "Reach-Ticker by Dataabbel");
$mw->resizable(0,0);
$mw->geometry("300x30+10+20");
my $label_w = $mw->Label(-textvariable => "")->pack(-expand => 1, -fill => 'x'); # leeres label erzeugen
my $i = 0;
my $text;
($text) = $mw->repeat(900, \&ping);
MainLoop;
sub ping{
my @data = qw (www.petra-hille.de www.google.de www.yahoo.de www.perl-community.de);
my $text;
my @pin = `ping -c 1 $data[$i]`;
if ($pin[4] =~ /received/) {
$text = $data[$i] . " received ";
$label_w->configure(-textvariable => \$text);
}
$i = -1 if $i == $#data;
$i++;
return ($text);
}
Benutze bitte
use strict; und
use warnings;!\n\n
<!--EDIT|renee|1093424276-->