---
title: "Tar bort för mycket..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/19161-tar-bort-för-mycket"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "Gislaved.net"
published: "2000-09-09T10:01:00.000Z"
updated: "2000-09-10T01:47:00.000Z"
replies: 1
views: 411
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/19161-tar-bort-för-mycket"
---

# Tar bort för mycket...

## #1 — Gislaved.net, 2000-09-09T10:01Z

Hej! 

Jag har skrivit ett gästboksscript med en liten smidig administrationsdel. Tyvärr lyckas jag inte ta bort ett inlägg ur gästboken, utan hela gästboksfilen raderas när jag försöker. Inläggen sparas i en textfil, ett inlägg per rad.

```
sub ta_bort_meddelande 
	{
 	  
    open (GBDATA,"$path/$in{'anvaendarnamn'}_gb.dat") or fel("Kunde inte &ouml;ppna $path/$in{'anvaendarnamn'}_gb.dat. - 8106\n");
       @information=<GBDATA>;
   close (GBDATA);
   (@GBDATA) = split(/\n/,@information);
 
   $antalrader = @information;
   
    # Vi kollar varje rad om den matchar.
for ($i=0;
        $i<$antalrader;
	$i++) {
       
    foreach $line (@GBDATA){
        if ("$in{'meddelande_att_ta_bort'}" ne "$line[$i]"){
 	   if ($new_data ne ""){
 	       $temp = "$new_data\n$line[$i]";
 	       $new_data = "$temp";
 	   }
 
	    if ($new_data eq ""){
		$new_data = "$line[$i]";
	    }
	}
     }

  }
  

     open (GBDATA,">$path/$in{'anvaendarnamn'}_gb.dat") or fel("Kunde inte &ouml;ppna $path/$in{'anvaendarnamn'}_gb.dat. - 8107\n");
     print GBDATA "$new_data";
    close (GBDATA);
}
```

Alla förslag på förbättringar tas tacksamt emot...

Permalänk: https://www.webforum.nu/p/19161

## #2 — Robban, 2000-09-10T01:47Z

\> (@GBDATA) = split(/\\n/,@information);

Vad är syftet? Tror inte denna rad gör vad du tror att den gör.

\> foreach $line (@GBDATA){

Har du kollat vad @GBDATA innehåller här? Skulle misstänka att den inte riktigt innehåller det du tror. :)

\> $temp = "$new_data\\n$line\[$i\]";
\> $new_data = "$temp";

Ett smartare sätt att skriva:

```
$newdata += "\n$line[$i]";
```

När variabeln är ensam (som i den andra raden ovan) är det dessutom helt onödigt (och slöseri med resurser) att sätta den innan för citattecken.

Permalänk: https://www.webforum.nu/p/341099

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/19161-tar-bort-för-mycket
