# in @datensaetze sind alle Daten gespeichert, also Element 0 = Rechnungsnummer 0, dann der Text, dann wieder Rechnungnummer usw. open (my $out,">","datei.txt"); foreach (@datensätze){ print $out $_."\n"; } |
open (in,"<","datei.txt"); @daten=<in>; close in; for ($i=0;$i<@daten;$i+=2){ if ($daten[$i] eq $gesucht){ $brieftext=$daten[$i+1]; last; } } print $brieftext; |
open (in,"<","datei.txt"); %daten=<in>; close in; if (exists $daten{$gesucht}){print "Brieftext: ".$daten{$gesucht};} else {print "Keine Daten vorhanden";} |
open (in,"<","datei.txt"); my @arr=(); while (<in>){ chomp($_); push (@arr,$_); next if $. % 2; ($name,$brieftext)=@arr; @arr=(); if ($name eq $gesucht){$gefunden = 1; last; } } if ($gefunden == 1){ print $brieftext;} else {print "Datensatz nicht gefunden";) |
################# # Daten schreiben ################# @inhalt=('1','Das ist ein Text, der idealerweise sehr lang wäre','2','Das wäre auch besser ein sehr langer Text','3','Und das wäre auch besser ein langer Text'); open (my $out,'>','test.txt') || die "Da gabs wohl nen Fehler: $!"; binmode $out; foreach (@inhalt){ print $out pack("N",length($_)).$_; } close $out; ################ # Daten einlesen ################ $gesucht = '3'; open (my $in,'<','test.txt') || die "Da gabs wohl nen Fehler: $!"; binmode ($in); { read($in,my $laenge,4); last if (!$laenge); # Dateiende erreicht $laenge=unpack ("N",$laenge); read ($in,$name,$laenge); if ($name eq $gesucht){ read($in, $laenge,4); $laenge=unpack ("N",$laenge); read ($in,$text,$laenge); $ergebnis=$text; $gefunden = 1; last; } else { read($in,$laenge,4); $laenge=unpack ("N",$laenge); # "Vorspulen" seek ($in,$laenge,1); } redo; } close $in; if ($gefunden == 1){ print "Text: ".$ergebnis;} else { print "Nicht gefunden";} |
open (my $out,'>>','test.txt') || die "Da ging was nicht $!"; print $out "neue Rechnungsnummer\n"; print $out "neuer Brieftext\n"; close $out; |
open (my $out,'>>','test.txt') || die "Da ging was nicht $!"; binmode $out; print $out pack("N",length("neue Rechnungsnummer"))."neue Rechnungsnummer"; print $out pack("N",length("neuer Brieftext"))."neuer Brieftext"; close $out; |
###################### # Datensatz löschen ###################### $gesucht = '2'; my $filesize= (-s "test.txt"); open (my $in,'<','test.txt') || die "Da gabs wohl nen Fehler: $!"; binmode ($in); { my $pos=tell($in); read($in,my $laenge,4); last if (!$laenge); # Dateiende erreicht $laenge=unpack ("N",$laenge); read ($in,$name,$laenge); if ($name eq $gesucht){ my $akpos=tell($in); # alle Daten vorher einlesen seek ($in,0,0); read ($in,$datendavor,$pos); # Dateizeiger auf alles nach dem gesuchten Datensatz legen seek ($in,$akpos,0); read($in, $laenge,4); $laenge=unpack ("N",$laenge); seek ($in,$laenge,1); my $restlaenge = $filesize - tell ($in); read ($in,my $rest,$restlaenge); close $in; open (my $out,'>','test.txt'); binmode $out; print $out $datendavor; # falls man Daten ersetzen will, dann hier # print $out pack("N",length($name)).$name; # print $out pack("N",length($inahlt)).$inhalt; # # print $out $rest; close $out; last; } else { # weiter nach "dem Richtigen" suchen read($in,$laenge,4); $laenge=unpack ("N",$laenge); # "Vorspulen" seek ($in,$laenge,1); } redo; } close $in; |