use Data::Dumper; my %produktionen; open(my $fh,"<",$grammarfile) or die $!; while(my $line = <$fh>){ chomp $line; my ($links,$rechts) = split(/\s*:\s*/,$line,2); $produktionen{$links} = $rechts; } close $fh; print Dumper(\%produktionen);