On 9/19/07, Ruprecht Helms <[EMAIL PROTECTED]> wrote: > #!/usr/bin/perl
First off, you should use the strict and warnings pragmas. So the first two lines after the $! should be use strict; use warnings; > > open(CSV,"Kalkulation_Tauchsportportal.csv") || die "CSV-Datei nicht > gefunden"; > > $i=0; > > while (<CSV>) > { > if($i==0) > { > $Felder = $_; > } > else > { > @Auftraege[$i] = $_; > } > $i++; > } > close(CSV); > $Anzahl = $i - 1; It is bad form to read in the entire file without doing any work*, also, if you really want to do this you can just say my ($felder, @Auftraege) = <CSV>; my $Anzahl = @Auftraege; > chop($Felder); Never use chop**. Use chomp instead. The chop function removes the last character. The chomp function removes the end-of-line character or character sequence. > @Datenfelder = split(/,,,$Felder); This line is just broken. I assume you meant my @Datenfelder = split /,/, $Felder; This is not the best way to deal with CSV unless it is very simplistic (what if there is a comma in one of the fields?). > for(@Auftraege) > { > @Datensatz = split(/,:,/,$_); Do you really mean to be splitting on the string ",:,"? > $i = 0; > for(@Datensatz) Notice how this loop does nothing the loop above didn't do: you are operating on each line separately. Why read them all in at once? > { > print Auftrag "$Datenfelder[$i]: $Datensatz[$i]\n"; You never opened Auftrag. > $i++; > } > } > close (Auftrag); > print $Anzahl," Datensaetze geschrieben\n"; Your code is better written as #!/usr/bin/perl use strict; use warnings; my $file = "Kalkulation_Tauchsportportal.csv"; open my $csv, '<', $file or die "could not open ${file}:$!\n"; chomp(my $fields = <$csv>); my @fields = split /,/, $fields; open my $orders, ">", "orders.txt" or die "could not open orders.txt:$!\n"; my $records_processed; while (<$csv>) { chomp; my %record; @[EMAIL PROTECTED] = split /,/; for my $field (@fields) { print $orders "${field}: $record{$field}\n"; } print $orders "\n"; $records_processed++; } print "$records_processed Datensaetze geschrieben\n"; * it is a waste of a loop and memory ** unless you know why exactly why chop is better for you situation than chomp (it almost never is) -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/