Schrift
[thread]7825[/thread]

\r\n

Leser: 2


<< >> 5 Einträge, 1 Seite
gregor
 2006-03-23 17:19
#64043 #64043
User since
2006-02-03
24 Artikel
BenutzerIn
[default_avatar]
hallo, folgendes problem: mit u.g. "durchfahre" ich als erstes die database (einfache textdatei), "sammle" alles vorhandene auf, schreibe den neuen datensatz in die erste zeile und füge das aufgesammelte dadrunter an. mit \r\n soll und wird das "aufgesammelte" nicht auch in die erste zeile der textdatei geschrieben, sondern natürlich in die zweite. gut. jetzt meine frage(n):
a) ist die lösung sinnvoll? (sie funktioniert)
b) ist sie für alle systeme uneingeschränkt verwendbar? (habe leider keinen zugang zu allen, bzw. kann es nicht mit allen testen)
c) gibt es eine geschicktere lösung?

sehr vielen dank.



Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub indateischreiben {
   open DATABASE, $database or die "Fehler $database, $!";
   my @FILE = <DATABASE>;
   close DATABASE;
   
   open DATABASE, '>', $database or die "Fehler $database, $!";
   flock DATABASE, 2;
   print DATABASE "$name|$email|$comments\r\n";
   print DATABASE @FILE;
   close DATABASE;
}
Taulmarill
 2006-03-23 17:27
#64044 #64044
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hm, ich sehe so was ziemlich kritisch. warum benutzt du keine existierenden module für so etwas. mit SQLite kannst du z.b. eine datei generieren und diese wie eine SQL-Datenbank benutzen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
GwenDragon
 2006-03-23 18:00
#64045 #64045
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Oder CPAN:DBD-Sprite für Textdatenbanken.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Dubu
 2006-03-25 15:41
#64046 #64046
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
1.) Ich empfehle auch SQLite oder ähnliches. Schnell, praktisch, wenig Aufwand.
2.) Warum muss der neue Datensatz am Anfang sein? Das Schreiben wird dadurch sehr ineffizient.
3.) Dein flock() ist nicht sicher, weil du vorher die Datei zum Schreiben öffnest. Durch das open DATABASE, '>', $database ... wird die Datei bereits auf Null Byte Länge gesetzt; ein paralleler Prozess könnte gerade zu diesem Zeitpunkt die (leere) Datei einlesen, womit die Datei danach nur noch aus einer Zeile besteht. Bei Webservern mit hoher Load passiert sowas innerhalb weniger Tage, wie Berichte hier im Forum schon gezeigt haben.
(s.a. perldoc -q "get locking")
renee
 2006-03-25 17:28
#64047 #64047
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Man könnte auch mit CPAN:DBD::CSV arbeiten, was den Vorteil hat, dass man die "Datenbank" (besser: die CSV-Dateien) auch noch woanders (ohne SQLite) verwenden kann. Und es ist auch erstaunlich schnell... Das nur als TIMTOWTDI-Hinweis...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 5 Einträge, 1 Seite



View all threads created 2006-03-23 17:19.