Mein Skript schmeißt sie in der zweiten Variante weg, die erste speichert die Ende-Rekords mit in den Dateien ab. Ich nehme mal an, Du brauchst Variante 2, dann musst Du die Ausgabenzeilen durch die unter dem Skript geposteten Zeilen ersetzen.
Bin mal gespannt, obs mit der großen Datei funktioniert. Ich bearbeite selbst große Dateien auf ähnliche Weise, bisher ohne Probleme.
Edit: Also so: (Hab das chomp auch nochmal verschoben, macht so mehr Sinn.)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/perl
use strict;
use warnings;
my @Buffer = ();
while (<DATA>) {
push @Buffer, $_;
if ($Buffer[-1] =~ /^"\$/) {
if (@Buffer <= 1) {
warn "Korrupte Daten vor Zeile $.";
}
else {
(my $fn = $Buffer[1]) =~ s~^\s*"([^"]+).*$~$1~;
chomp $fn;
unless (length $fn) {
warn "Kann Dateinamen vor Zeile $. nicht ermitteln.";
}
else {
$fn .= '.csv';
open(OUT, ">$fn") or die "Cannot open '$fn': $!";
print "[DEBUG] '$fn': open ok\n";
for my $ind (0..$#Buffer-1) {
print OUT $Buffer[$ind];
}
close(OUT) or warn "Cannot close '$fn': $!";
print "[DEBUG] '$fn': close ok\n";
}
}
@Buffer = ();
}
}
_ _DATA_ _
"beginn erster Datensatz" "" ""
"matthew01" "" ""
"texttexttexttetx text text" "" ""
"texttext text" "" "98387"
"text, text" "" ""
"text" "" ""
"" "" ""
"text" 0.00 0.00
"$" "" ""
"" "" ""
"matthew02" "" ""
"" "" ""
"texttext text" "5330146514" ""
"" "" ""
"text, text" "" ""
"" "" ""
"text" "30.06.1999" ""
"$" "" ""
"" "" ""
"matthew03" "" ""
"" "" ""
"texttext text" "5330146514" ""
"" "" ""
"text, text" "" ""
"" "" ""
"text" "30.08.2000" ""
"$" "" ""
"" "" ""
"matthew04" "" ""
"" "" ""
"texttext text" "5330146514" ""
"" "" ""
"text, text" "" ""
"" "" ""
"text" "30.08.2000" ""
"$" "" ""
Edit2: Herzlich Willkommen, Matthew :-)\n\n
<!--EDIT|Crian|1084199411-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite