Hi,
erst mal ein wenig Vorgeschichte:
Ich schreibe gerade so eine Art Minibrowser, der eine Internet-Ressource auf verschiedene Arten darstellen kann. Dazu gehört auch, daß der Quelltext einer HTML-Seite als Text dargestellt wird, Links u.ä. aber auch als solche erscheinen (natürlich verändert, damit wieder das Script zur Ausgabe benutzt wird). Dabei sind mir zwei Dinge aufgefallen:
Erstens ist die Datei http://www.teamone.de/selfhtml/wselfhtm.css vom Type "application/x-pointplus" ;-))) und wird daher von meinem Script wie Binärdaten als Hexdump ausgegeben.
Zweitens lautet ein Teil dieser Ausgabe wie folgt:
[...]
5088 6E 64 65 72 62 61 72 20 2A 2F 0A 0A 61 2E 61 6E nderbar */..a.an
5104 20 7B 20 74 65 78 74 2D 64 65 63 6F 72 61 74 69 { text-decorati
5120 6F 6E 3A 6E 6F 6E 65 3B 20 7D 0A 0A 0A 0A 0A 2F on:nsubstr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 87.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
substr outside of string at c:\programme\netz\homepage neu\test\surf\surf.pl line 89.
one; }...../
5136 2A 20 57 65 6E 6E 20 53 69 65 20 73 69 63 68 20 * Wenn Sie sich
5152 6D 69 74 20 53 74 79 6C 65 2D 53 68 65 65 74 73 mit Style-Sheets
[...]
Wenn man genauer hinguckt merkt man, daß der Text "text-decoration:n[...]one;" verlustfrei unterbrochen wird. Die Fehlermeldung, die übrigens an verschiedenen Stellen in verschiedener Anzahl auftaucht, immer jedoch n mal in Zeile 87 und n mal in Zeile 89, kann ich zwar übersetzen, aber ich verstehe sie nicht. Sie wird in folgender Routine erzeugt:
sub hexdump {
$z = length(length($_[0]));
print "<nobr><pre>\n";
print "Datei: $url\n";
print "Länge: ".length($_[0])." Bytes\n\n";
for ($i=0; $i<length($_[0]); $i+=16) {
print substr($i." ",0,$z)." ";
for ($j=$i; $j<=$i+15; $j++) { print &dez2hex(substr($_[0],$j,1))." "; }
print " ";
for ($j=$i; $j<=$i+15; $j++) { print &chrprint(substr($_[0],$j,1)); }
print "\n";
}
print "</pre></nobr>\n";
}
Die Routine wurde mit dem Inhalt der Datei aufgerufen ($z enthält die Zahl der Ziffern, die maximal als Position ausgegeben werden können), die beiden Routinen dez2hex und chrprint sind kaum für den Fehler verantwortlich zu machen - zumal sie grundverschieden sind, der Fehler aber gleichmäßig auftritt. Zeile 87 und 89 sind übrigens die beiden "print &...(substr..."-Zeilen.
Diese Routine funktioniert online auf meinem Webserver einwandfrei und ohne irgendwelche Meldungen, lokal auf OmniHTTPd mit ActivePerl aber nicht mehr. Hat jemand eine Vorstellung, woran das liegen könnte? Arbeitsspeicher ist unwahrscheinlich, da ich 80 MB habe und das Windows-Swapfile noch nicht mal halb so groß ist...
Cheatah