Bei mir gibt Ping nichts mit "Antwort" aus. Auch nichts vergleichbares englisches... womit schon das eigentliche Problem dieses Tests erwähnt wäre, denn man kann sich nicht auf die Locales/Spracheinstellungen des Endanwenders verlassen.
$ ping google.de
PING google.de (216.239.59.104) 56(84) bytes of data.
64 bytes from 216.239.59.104: icmp_seq=1 ttl=245 time=85.3 ms
64 bytes from 216.239.59.104: icmp_seq=2 ttl=245 time=87.0 ms
...
Warum nicht so:
perl -MLWP::Simple -lwe 'get("http://google.de") and print "Ich bin auf der Strecke"'
OK, ist ziemlich ineffizient, gleich ein Dokument herunterzuladen, aber es lässt sich recht schnell eintippen ;)
Wobei es vielleicht trotz der Ineffizienz ein besserer Test ist. Abgesehen davon, dass es sich nicht auf die Ausgabe eines Programms verlässt, was von System zu System und Locale zu Locale etwas anderes ausgibt, funktioniert es auch in Netzwerken, die nur über einen Proxy auf Webseiten zugreifen können und ansonsten nicht das Internet erreichen dürfen (kein Ping). Vorausgesetzt, LWP ist für den Proxy konfiguriert.
Aber hier sieht man auch wieder, dass, wie GwenDragon schon schrieb, die wirkliche Antwort eigentlich die Gegenfrage "Was ist online?" ist. Geht es um Webseiten, den DSL-Anschluss (direkt oder über Router), den Nachbarcomputer, den Gameserver, den On-/Offline-Modus in Firefox oder Outlook Express, den Status bei ICQ?
Als mein Onkel sich sein erstes Modem zugelegt hatte, hat er zu mir gesagt "Ich bin jetzt online." Leider weiß ich gerade kein Perlscript, mit dem man "online sein" in diesem Sinne testen kann.