Thread Perl - trennen nach Leerer Zeile
(6 answers)
Opened by savedxd at 2017-06-21 21:28
Man könnte zum Beispiel die Datensätze dort trennen, wo mindestens eine Leerzeile auftaucht, oder man könnte die Zeilen identifizieren, die kein Gleichheitszeichen enthalten.
Ersteres könnte man mit etwas in der Art von split /\n{2,}/, ... bewerkstelligen, aber wenn man die Datei sowieso zeilenweise einliest, kann man das auch gleich während des Lesens erledigen. Beispielcode: Code (perl): (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 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 use 5.012; use warnings; my %records; do { my $name; my $record; while (my $line = <DATA>) { chomp $line; if (defined $name) { if (length $line > 0) { # Data line my ($k, $v) = split /\s*=\s*/, $line, 2; $record->{$k} = $v; } else { # Reached end of record $records{$name} = $record; $name = undef; $record = undef; } } else { if (length $line > 0) { # Beginning of record $name = $line; $record = {}; } else { # Additional empty line between records } } } if (defined $name) { $records{$name} = $record; } }; use Data::Dumper; print Dumper \%records; __DATA__ h cool = ja schön = nein d cool = nein schön = ja b cool = nein schön = nein When C++ is your hammer, every problem looks like your thumb.
|