use Data::Dumper; my $str = "EXPRESS     liver; colon; small intestine; other; mixed; bone"; my ($name, $werte) = split(/\s/, $str, 2); my %zielhash = (); my $count = 0; foreach (split(/\;/, $werte)) {    $_ =~ s/^\s+//g;    $_ =~ s/\s+$//g;    $zielhash{$name."_".++$count} = $_; } print Dumper(\%zielhash);