perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 13
Click for quality!




12.02.2012 / 02:45

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragwie kann man daten löschen keine datei
Seitenanfang
Hallo,

wie kann ich denn Sorgen das in einer Datei einige Daten gelöscht werden.

Datum: 15.08.2006-15:50

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Wie sieht die Datei aus? Welche Daten sollen gelöscht werden?

Datum: 15.08.2006-21:03

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Ich wiederhole mich:
Wie sieht die Datei aus? Welche Daten sollen gelöscht werden?

Einen ersten Ansatz hat ja tinita gegeben. Aber wie es genau aussehen muss kann man aufgrund der spärlichen Infos nicht sagen...

Datum: 16.08.2006-17:49

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
sorry,

in der datei bsp(test.txt) sollen z.b. einige namen stehen: z.b.

Hans
Peter
Jürgen
Eva

So jetzt möchte ich den namen Peter löschen aber wie, ich habe es erst mit der If-Bedingung gemacht, aber bei 50 daten bzw. namen macht es keinen sinn mehr mit der If-Bedingung, deshalb brauche ich eure hilfe

Gruß

Datum: 17.08.2006-08:50

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Irgendwie musst Du doch die Information bekommen, welche Namen gelöscht werden sollen?!?

Wenn Du die Daten in einem Array hast (egal ob Du das über eine Datei füllst oder ein HTML-Formular oder in das Skript schreibst), dann kannst Du es so machen:

use Tie::File;

my @zu_loeschen = qw(Peter Mario);
my $file = 'test.dat';

tie my @lines,'Tie::File',$file or die $!;
@lines = grep{chomp(my $test = $_);!grep{$_ eq $test}@zu_loeschen}@lines;
untie @lines;

Datum: 17.08.2006-10:38

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
danke für die schnelle antwort.

Ja, es wie in die HTML-formular geschrieben welcher name gelöschte werden soll, daraufhin soll dann der name gelöscht werden.

Die eingabe erfolgt durch eine input eingabe.Das mit checkbox habe ich nicht hinbekommen deshalb habe ich mich für das <input name="xy"> entschieden.

Datum: 17.08.2006-10:46

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Das ist mein bisheriger Ansatz.


read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$buffer = $ENV{"QUERY_STRING"};
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value; };
# Das ist für das Daten abrufen
----------------------------------------
$dateialt = "test-2.txt";
$dateineu = "test-3.txt";

open(DATEIALT, "$dateialt");
open(DATENNEU, "$dateineu");
while(<DATEIALT>)

{
unless($FORM{delet} eq "$_")
{
print DATEINEU $_;
}
}

close(DATEIALT);
close(DATEINEU);

So in etwa müsste es sein GLAUB ICH :-)

Gruß

Datum: 17.08.2006-11:29

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Bitte verwende CGI.pm. Die Art die zum Auslesen der Formularparameter verwendest ist veraltet, unsicher und außerdem zu lang ;)

Aus


read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$buffer = $ENV{"QUERY_STRING"};
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value; };

wird

use CGI;
my $cgi = CGI->new();
my %FORM = $cgi->Vars();

Du öffnest keine der Dateien zum schreiben und Du verwendest keine Fehlerabfrage. Aus


open(DATEIALT, "$dateialt");
open(DATENNEU, "$dateineu");

sollte


open(DATEIALT,'<', $dateialt) or die $!;
open(DATENNEU, '>',$dateineu) or die $!;

werden.

Ausserdem hängt beim Einlesen noch das zeilenende-Zeichen dran, bei dem Namen aus dem Formular aber nicht.

aus


unless($FORM{delet} eq "$_")
{
print DATEINEU $_;
}

muss also


chomp $_
unless($FORM{delet} eq $_)
{
print DATEINEU $_;
}

werden

Datum: 17.08.2006-17:05

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
das geht am einfachsten mit Tie::File. doku siehe CPAN.

Datum: 16.08.2006-10:13

Beitragre: wie kann man daten löschen keine datei
Seitenanfang
Hallo,

also ich habe jetzt einen Formular in HTML erstellt, welches ich mit PERL verknüpft habe bzw. andersrum.

in einer Hauptseite stehen alle Daten die ich in der Datei(Bsp.test.txt) habe. Nun kann ich jetzt wählen ob ich neue Daten hinzufügen möchte.(Das ist kein problem hab es schon hinbekommen). Desweiteren sollte ich noch die Möglichkeit habe einige Daten zu löschen. Aber wie ????????????

(hatte überlegt einen vergleich zu erstellen, dann alle daten in die neue datei hinzuzufügen ohne den wert der davor zum löschen selektiert wurde, (Aber das habe ich auch nicht hinbekommen).

Also jetzt wie kann ich die Aufgabe lösen.
Danke schonmal für die Lösungen.

MFG

Datum: 16.08.2006-16:53

-






-
-