Avatar billede nvr Nybegynder
04. juli 2000 - 10:01 Der er 3 kommentarer og
1 løsning

Sletning af fil part Deux

Man troede det ej muligt... Netop som jeg mente, at nu havde jeg styr på det "#¤%&/( sletning af linier i en fil, driller det igen.

Det forrige spørgsmål var: http://www.eksperten.dk/spm.asp?id=19795

Okay, Erik, det her spørgsmål er nok mest til dig! :)

Filen, den skal slette en linie fra, er:

<a     href="nyheder/test.shtml">test</a><br><br>

Som det bemærkes, ER der sat en tabulering efter <a, så scriptet kan splitte linierne op.

Koden er den Erik lavede:

print "<html><head><title>Hello</title></head><body>\n";
print $query->p("Hello");

open(GW2,"forsideoverskrifter.txt") || die('Doe');
@lines2 = <GW2>;
close GW2;

print "<b>F&oslash;r:</b><br>\n";
foreach $line2 (@lines2) {
  print "$line2<br>";
}


if ($f ne "") {

print "<b>Efter:</b><br>\n";

open (GB2,">forsideoverskrifter2.txt");
  foreach $line2 (@lines2) {
  @TempData2 = split (/\t/, $line2);
  if (!($TempData2[1] =~ /$f$/)) {
    print "$line2<br>";
    print GB2 $line2;
  }
}
close(GB2);
}


print "<br><br><form>Slet: <input type=\"text\" name=\"f\"><input type=\"submit\"></form>";

print "</body></html>\n";


Det eneste jeg har ændret er $TempData2[0] til $TempData2[1] for at den skal reagere på anden halvdel af linien.

Scriptet kan ses i funktion på:

http://www.nvr.dk/cgi-bin/nvr.pl

Problemet er bare, at den ikke vil slette noget!!!
Avatar billede erikjacobsen Ekspert
04. juli 2000 - 13:22 #1
Min kode virker kun, hvis den tekst du leder efter står sidst på linien.
Der er jo nok ikke tilfældet. Et hurtigt hack, lav $f$ om til $f (i if-sætningen)
Så sletter den de linier, der indeholde pågældende tekst et eller andet sted.
Problemer er lidt at det kan komme til at slette for meget.

Hvis du ved der er "-er omkring kan du skrive  "$f" i stedet for $f$

Og hvis det kun er filen, og ikke kataloget, der er i $f kan du skrive "nyheder\/$f" i stedet for $f$.
Eksempel

  if (!($TempData2[1] =~ /"nyheder\/$f"/)) {

Et $ tilsidst i sådan et regulært udtryk betyder "sidst på linien". Et /-tegn i et regulært
udtryk må ikke forveksles med de /-er der står rundt om. Derfor \/ .
Avatar billede erikjacobsen Ekspert
04. juli 2000 - 13:23 #2
PS: har du ikke snart mere mod på at bruge en "rigtig" database  ... ;-)
Avatar billede nvr Nybegynder
05. juli 2000 - 09:58 #3
Alletiders. Så duede det.

Jow, jeg burde gå over til et databasestyret system, MEN da hjemmesiden ligger hos en udbyder, hvis mysql er så ustabil, at 10 timers nedetid forekommer ofte, er det pt. ikke en mulighed! :(
Avatar billede erikjacobsen Ekspert
05. juli 2000 - 10:00 #4
Hvad med den i Perl indbyggede DBM-database ??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester