Thread z.T. keine neue Zeile bei txt Datei (14 answers)
Opened by Olli at 2011-07-11 11:12

pktm
 2011-07-11 15:05
#150297 #150297
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hi!

Was mir beim Thema Bauchschmerzen noch einfällt:
Wenn du das Komma als Trennzeichen benutzt, solltest du das in den Daten ausschließen können. Deshalb nehme ich da gerne den Tabulator, der ist schwieriger Einzugeben und kann meistens durch ein Leerzeichen ersetzt werden.

Beispiel:
more (1.1kb):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!perl

use strict;
use warnings;

my $zufallnr = 12345;
my $derVorname = 'Kira';
my $derNachname = 'Eberle';
my $mailto = 'spam@rundablage.de';

# -- Trennzeichen Tabulator ausschließen
$zufallnr =~ s/\t+/ /g;
$derVorname =~ s/\t+/ /g;
$derNachname =~ s/\t+/ /g;
$mailto =~ s/\t+/ /g;

# -- Nummer prüfen: ist gültig, wenn es zwischen 1 und 90 Ziffern sind.
die("Ungültige Nummer: [$zufallnr]") if $zufallnr !~ m/^\d{1,90}$/;

open(APPENDFILE,">>$zufallnr.txt") or die($!);
print APPENDFILE "$zufallnr\t$derVorname\t$derNachname\t$mailto\n";
close(APPENDFILE);


Ferner ist es sinnvoll, Benutzereingaben immer zu prüfen. Reguläre Ausdrücke machen das ganz fix. Und pb eine Datei existiert, bekommst du mit -e $dateiName raus.

Beispiel:
more (1.3kb):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!perl

use strict;
use warnings;

my $testNr = 12345;
my $dateiName = "$testNr.txt";
die("Datei [$dateiName] existiert nicht") unless -e $dateiName;

open(READFILE, '<', $dateiName) or die('Kann Datei nicht öffnen: ' . $!);
my @alleZeilen = <READFILE>;
my $ersteZeile = $alleZeilen[0];
chomp($ersteZeile); # \n entfernen
my @empfaengerDaten = split(/\t/,$ersteZeile);
my $derName = $empfaengerDaten[1];

open(APPENDFILE,">>newsletter.txt") or die('Kann Datei nicht öffnen: ' . $!);
print APPENDFILE "$ersteZeile\n";
close (APPENDFILE);
close(READFILE);

die("Ungültiger Dateiname: [$dateiName]") unless $dateiName =~ m/^\d{1,90}\.txt$/;
unlink($dateiName); # XXX: Fehler Abfangen?

print "Hallo $derName, vielen Dank für die Newsletter-Bestellung!";
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread z.T. keine neue Zeile bei txt Datei