use Text::CSV_XS; # die schnellere Variante, auf C-Code basierend sub lese_email { my ($datei) = @_; my @email; my $csv = Text::CSV_XS->new ({ sep_char => ';', # Feldtrenner ist Semikolon binary => 1, # auch Nicht-ASCII-Zeichen erlauben, z.B. Umlaute, UTF-8 }); open my $datei_fh, "<", $datei or die "Kann $datei nicht oeffnen: $!"; $csv->getline($datei_fh); # Kopfzeile parsen, aber nicht speichern while (my $zeile = $csv->getline($datei_fh)) { my %zeilenhash; # Hash fuellen ueber Hash-Slice: @zeilenhash{ qw/kostenstelle kostenstellenname kostentraeger kostentraegername konto kontoname email name/ } = @$zeile; push @email, \%zeilenhash; } close $datei_fh; return @email; }