Patrick: Wo ist mein Denkfehler?

Beitrag lesen

Hallo PERLer!

Nach dem mich die Suche daran, wie ich mein Browser dazu bringe, mir wieder den Quelltext anzuzeigen (http://www.teamone.de/selfaktuell/forum/?m=132817&t=25481), fast einen halben Tag "Forschung" gekostet hat, forschte ich gestern abend weiter an meinem Counter (Link hier oben).

Und da wollen mir die Ergebnisse, die ich bei der Browserauswertung erziele, nicht in den Kopf (nein, nein, nicht deswegen, weil Netsi so schlecht abschneidet *gg*).

Also wollen wir es mal durchgehen. So sieht eine Zeile meiner Counterlogfiles aus:

Datum*Uhrzeit*Host*IP*UserAgent*Referer*Bla*Foo*UndNochwas*

Sie wird gesplittet und ein Array @UserAgent erstellt.

Wenn ich im Array (foreach $UserAgent (@UserAgent) etc...) nach der Zeichenfolge MSIE suche, dann wird jeder String, in welcher die Zeichenfolge vorkommt, in einem weiteren Array @MSIE gespeichert. Die Array-Länge ist dann zwangsläufig die Anzahl der UserAgents-Strings, in welcher die abgefragte Zeichenfolge "MSIE" vorkommt, also entspricht der Anzahl der IE-Nutzer. Soweit logisch, nee?

Gut, dann verfeinere ich die Sache und mache nach dem gleichen Muster 7 Einzelsuchen nach MSIE 5.5, MSIE 5.0, MSIE 5.01, MSIE 4.0, MSIE 4.01, MSIE 4.5 (MAC) und MSIE 6.0b. Wenn ich keine Unterversion des IE ausgelassen habe (hier habe ich absichtlich MSIE 3.0 ausgelassen) dürfte die Summe der Einzelergebnisse gleich sein, wie das Ergebnis der "globalen" Suche nach MSIE. Denn in z.B. der Zeichenfolge "MSIE 5.5" ist ja bereits die Zeichenfolge "MSIE" enthalten.

Und eben das differiert. Und zwar ist die Summe der Einzelsuchen höher als das Ergebnis der Suche nach "nur" MSIE!

<Ich benutze mittlerweile nach einem Tipp von CK Hashes, da die Arrays speicherintensiv sind und die UserAgent-Strings ja ellenlang sind, was bei beispielsweise über 24000 Logdateieinträgen im April zu Speicherprobs führt. Aber da es auf dem lokalen Webserver geht, habe ich heute nacht die Ergebnisse verglichen: Sie sind gleich, ob die Hashes oder die Arrays ausgewertet werden.>

Also, wo ist mein Denkfehler? Hier das Beispiel live: http://atomic-eggs.com/cgi-bin/whocannotcount.cgi <-- hier wird Mai_2001.txt ausgewertet.

Patrick
<hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>