R
ratelco
Hallo,
ich habe folgendes Problem. Ich will in einer textbasierten Datenbank (*.dat Datei) Daten löschen können, indem in einem Formular eine eindeutige Identifikationsnummer eingetragen wird, und dann in der Datenbank die Zeile, in der die Nummer vorkommt gelöscht wird. Nun hatte ich schon mal folgenden Vorschlag bekommen:
open(DATA,"file.dat");
my $file = <DATA>;
close(DATA);
my @file = split(/\#/,$file);
my $i;
while($i<=$#file){
# Anhand der Nr.löschen
if($file[$i] eq $nr){
splice(@file,$i,6);
last;
}
$i = $i + 6;
}
open(DATA,">file.dat");
print DATA join
Wobei die Textdatei folgendermaßen aufgebaut ist:
Nr.#Nachname#Email#Datum#Zeit#Code
145487#Max#ma.must@a.de#25.06.2007#12:53:16#RRyuQsyQ5s
168485#Tim#tim.mus@a.de#25.06.2007#12:58:06#RRyuQs5fys
Soweit ich das verstanden habe, wird die gesamte Textdatei nun durchgegangen, wobei das $i jeweils eine Eingabe zählt, sprich mit ($i eq $nr) wird geprüft, ob eine eingegebene Nummer der Nr. in der Datei entspricht. wenn das der Fall ist, wird dann mit splice(@file,$i,6); die 6 Eingabefelder von Nr. bis Code (also eine Zeile) gelöscht und mit last zum Ende gesprungen oder ansonsten wird mit $i= $i+6 in die nächste Zeile gesprungen.
Leider funktioniert das ganze so noch nicht, außerdem verstehe ich nicht, was my @file = split(/\#/,$file); genau bewirken soll. Bin für jede Hilfe und Idee dankbar.
ich habe folgendes Problem. Ich will in einer textbasierten Datenbank (*.dat Datei) Daten löschen können, indem in einem Formular eine eindeutige Identifikationsnummer eingetragen wird, und dann in der Datenbank die Zeile, in der die Nummer vorkommt gelöscht wird. Nun hatte ich schon mal folgenden Vorschlag bekommen:
open(DATA,"file.dat");
my $file = <DATA>;
close(DATA);
my @file = split(/\#/,$file);
my $i;
while($i<=$#file){
# Anhand der Nr.löschen
if($file[$i] eq $nr){
splice(@file,$i,6);
last;
}
$i = $i + 6;
}
open(DATA,">file.dat");
print DATA join
Wobei die Textdatei folgendermaßen aufgebaut ist:
Nr.#Nachname#Email#Datum#Zeit#Code
145487#Max#ma.must@a.de#25.06.2007#12:53:16#RRyuQsyQ5s
168485#Tim#tim.mus@a.de#25.06.2007#12:58:06#RRyuQs5fys
Soweit ich das verstanden habe, wird die gesamte Textdatei nun durchgegangen, wobei das $i jeweils eine Eingabe zählt, sprich mit ($i eq $nr) wird geprüft, ob eine eingegebene Nummer der Nr. in der Datei entspricht. wenn das der Fall ist, wird dann mit splice(@file,$i,6); die 6 Eingabefelder von Nr. bis Code (also eine Zeile) gelöscht und mit last zum Ende gesprungen oder ansonsten wird mit $i= $i+6 in die nächste Zeile gesprungen.
Leider funktioniert das ganze so noch nicht, außerdem verstehe ich nicht, was my @file = split(/\#/,$file); genau bewirken soll. Bin für jede Hilfe und Idee dankbar.