my $string = qq~ GENLIST = Array2.genlist # Kommentar TERMLIST = 02_IrgendeineListe 03_IrgendeineListe # Kommentar \ # Kommentar, \ # Kommentar STARTLIST = dateiname.ids # Kommentar OUTPUTNAME = # Kommentar CROSSLIST = 01_XY # Kommentar ADDFILTER = # Kommentar ~; use strict; use warnings; use Data::Dumper; my %hash; my @lines = split /\r?\n/,$string; for (@lines) { if (/(\w+?)\s*?=\s*?(.*?)#/) { my ($key,$values) = ($1, $2); my @values = $values =~ /\s*(\S+)\s*/g; $hash{$key} = [@values]; } } print Dumper \%hash; _ _ END _ _ $VAR1 = { 'ADDFILTER' => [], 'CROSSLIST' => [ '01_XY' ], 'TERMLIST' => [ '02_IrgendeineListe', '03_IrgendeineListe' ], 'OUTPUTNAME' => [], 'STARTLIST' => [ 'dateiname.ids' ], 'GENLIST' => [ 'Array2.genlist' ] };