Datei lesen per Browsa
BAKKA
- perl
Hallo ...
Vorweg ein paar Infos ueber meine Arbeitsumgebung:
SUN Solaris
UNIX
Netscape 4.61
Perl 5.00502
So.. Es geht darum mit einem Perl-Programm in einer Datei nach einer Markierung zu suchen, dann den Teil bis zur markierung zu ersetzen....
Die Parameter fuer die Suche werden in einem, mit Perl generiertem ,HTML Dokument abgefragt, und dann ungefaehr so uebergeben:
$tag = param('$Tag');
Doch das spannende passiert bei dem Vergleich, der den tag mit der jeweiligen Zeile vergleicht....
while (<OLDHTML>)
{
push(@temp,$_);
$s=$_;
$s=~ s/ //g;
$tag=~ s/ //g;
if (($tag eq $s)
so.. und nun sollte das if irgendwann greifen... tut es aba nich
Weiss irgendjemand wieso nicht?
(denn in einer Terminal-Version laeuft es..)
Falls Ja, dann bittebittebitte antworten
:)
BAKKA
P.S. verzeiht bitte die laenge dieser Frage, aba ich hab es schwer mich kurz zu fassen :)
Hi,
ich bin zwar nicht ganz sicher, Dich vollständig verstanden zu haben (was hat das ganze denn bitte mit dem Browser zu tun?), aber auf folgendes gibt es eine einfache Lösung:
So.. Es geht darum mit einem Perl-Programm in einer Datei nach einer Markierung zu suchen, dann den Teil bis zur markierung zu ersetzen....
Du willst also eine Datei lesen und alles bis zur Markierung, nennen wir sie $mark, ignorieren?
open(READ,$datei) or die "Kann $datei nicht oeffnen: $!";
my $temp = $/; # für später speichern :-)
$/ = $mark;
my $ignore_this = <READ>;
$/ = $temp;
my @rest_der_datei = <READ>;
close(READ) or die "Kann $datei nicht schliessen: $!";
while (<OLDHTML>)
{
push(@temp,$_);
$s=$_;
$s=~ s/ //g;
$tag=~ s/ //g;
»» if (($tag eq $s)
so.. und nun sollte das if irgendwann greifen... tut es aba nich
Vermutlich hast Du nicht bedacht, daß an $s=$_ immer noch die Zeilenendemarkierung (i.d.R. \n) hängt. Bearbeite es also z.B. vor dem push-Befehl einfach mit
chomp;
HTH
Cheatah
Hallo ..
Danke ersteinmal fuer Deine Loesung...
meine Idee war es die Datei Zeilenweise auszulesen, die Zeilen dann mit dem Tag zu vergleichen, dann ein positionsmarker mit $. zu setzten, und dann eine Datei zu oeffnen , den neuen Kopfteil zeilenweise einsetzen, und die alte Datei(mittlerweilen in einem Array abgespeichert) ab dem Positionsmarker in Die neue datei zu schreiben...
Deins war viel kuerzer, jedoch bricht er ab sobald er an eine Datei kommt, die nicht den Tag enthaelt..
Haetest Du vielleicht noch eine Loesung , wie ich ich vorher noch ueberpruefen kann , ob der Tag in der Datei vorkommt?
Danke
BAKKA
So .. hat sich jetzt alles erledigt..
hab dem tag noch ein \n angehaengt, denn chomp hats irgendwie nicht gebracht; effekt ist trotyzdem der selbe .. GLEICHHEIT :)
Bin jetzt wieder Gluecklich
Danke
BAKKA