ich bin komplett neu in der Perl-Welt. Folgendes Skript hat mich auf Perl gebracht: Jabber-Nachricht bei Anruf an FritzBox. Hab das Skript etwas erweitert, bin aber jetzt auf ein Problem gestossen.
Nach Starten des Skripts wartet es auf Nachrichten von der FritzBox. Das Empfangen funktioniert wunderbar. Aber nach einiger Zeit (Stunden?) reagiert mein Skript nicht mehr auf eingehende Nachrichten. Starte ich das Skript in einer anderen Konsole nochmal, funktioniert dieses, die FritzBox schickt also weiterhin Nachrichten.
Aus irgendwelchen Gründen wird also anscheinend das Socket geschlossen und das Skript, genauer das while(<$sock>) reagiert darauf nicht. Wie kann ich das so anpassen, dass die Trennung erkannt und dann die Verbindung neu aufgebaut wird?
Hier die relevanten Passagen:
Code: Alles auswählen
#!/usr/bin/perl -w
use IO::Socket;
use strict;
# [...]
my $sock = new IO::Socket::INET (
PeerAddr => $FRITZBOX,
PeerPort => '1012',
Proto => 'tcp'
);
die "Could not create socket: $!\n" unless $sock;
while(<$sock>)
{
warn "\n\n\n================\nIncoming message from fritzBox:\n$_\n";
if ($_ =~ /RING/){
# [...] sendMessage
}
}
warn "\n\nClosing Socket..\n";
close($sock);
warn "Bye.\n";
smo