1
2
3
ID,Vorname,Name,Buch,Preis,Verlag
1,Josef,Gans,"Das Komma (,)",23.50,"Büchle Verlag, Zürich"
2,Antonia,Zwerg,"Buchstaben, Worte sind Schall",18.20,OX-Verlag
Quotedass es doch eine "native" Perl-Funktion geben soll, die Werte, welche kommagetrennt in einem String stehen in ein Array speichert...
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
#!/usr/bin/perl use strict; use warnings; use Text::CSV; use utf8; # wg. Umlauten in __DATA__ my $csv = Text::CSV->new; my $firstline = 1; # Flag ob erste Zeile my @keys; while (my $line = <DATA>) { # eien Datenzeile aus __DATA__ lesen my $status = $csv->parse($line); # CSV-Zeile parsen warn $csv->error_diag() if not $status; # falls etwas schief ging, dann Fehler ausgeben my @columns = $csv->fields(); # geparste Felder if ($firstline) { $firstline = 0; @keys = @columns; # Feldnamen kopieren next; } print # Ausgabe von "$_: ", # Feldname shift(@columns), # Wert des Feldes aus Array lesen "\n" # Return für Ausgabe for @keys; # für alle Feldnamen } __DATA__ ID,Vorname,Name,Buch,Preis,Verlag 1,Josef,Gans,"Das Komma (,)",23.50,"Büchle Verlag, Zürich" 2,Antonia,Zwerg,"Buchstaben, Worte sind Schall",18.20,OX-Verlag 3,Adam,Riese,"Schnee aus Witten, Reihe: Krimi und Leidenschaft",18.00,Oldschool-Verlag
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
#!/usr/bin/perl use strict; use warnings; use utf8; # wg. Umlauten in __DATA__ my $firstline = 1; # Flag ob erste Zeile my @keys; while (my $line = <DATA>) { # eien Datenzeile aus __DATA__ lesen my @columns = split /,/,$line; if ($firstline) { $firstline = 0; @keys = @columns; # Feldnamen kopieren next; } print # Ausgabe von "$_: ", # Feldname shift(@columns), # Wert des Feldes aus Array lesen "\n" # Return für Ausgabe for @keys; # für alle Feldnamen } __DATA__ ID,Vorname,Name,Buch,Preis,Verlag 1,Josef,Gans,"Das Komma (,)",23.50,"Büchle Verlag, Zürich" 2,Antonia,Zwerg,"Buchstaben, Worte sind Schall",18.20,OX-Verlag 3,Adam,Riese,"Schnee aus Witten, Reihe: Krimi und Leidenschaft",18.00,Oldschool-Verlag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use Text::ParseWords;
foreach( <DATA> )
{
my @words = quotewords( ",", 0, $_ );
for (0 .. $#words){
print $words[$_] . "\n";
}
}
__DATA__
ID,Vorname,Name,Buch,Preis,Verlag
1,Josef,Gans,"Das Komma (,)",23.50,"Büchle Verlag, Zürich"
2,Antonia,Zwerg,"Buchstaben, Worte sind Schall",18.20,OX-Verlag