#!/usr/bin/perl use strict; use warnings; my %params; open PARAM, "/homes/Patrick/Perl/Tk/Project.bak" or die $!; my $buffer = ''; while () {   # Kommentare loeschen   s/\s*#.*?(\\?\n)/$1/;   # Leerzeichen an Anfang und Ende loeschen   s/^\s+//;   s/\s+$//;   # Zeile jetzt leer?   unless (length) {       # vorhandenen Buffer bearbeiten       insert_keys (\$buffer, \%params);       next;   } # Zeile merken   $buffer .= $_;   if ($buffer =~ /\\$/) {    # Fortsetzung folgt?       # Fortsetzungszeichen durch Leerzeichen ersetzen       chop $buffer; $buffer .= " ";       next;   }   # Ein Satz zusammen => eintragen   insert_keys (\$buffer, \%params); } # Falls die letzte Zeile noch ein Fortsetzungszeichen hatte ... insert_keys (\$buffer, \%params); use Data::Dumper; print Dumper \%params; ############################################# sub insert_keys {   my ($bufferp, $paramp) = @_;   return unless defined $$bufferp && length $$bufferp;   die "Syntaxfehler in Zeile $." unless index ($$bufferp, '=') >= 0;   my ($key, $val) = split /\s*=\s*/, $$bufferp, 2;   unless (defined $val) {       $paramp->{$key} = undef;       return;   }   if ($val =~ /\s/) { # Leerzeichen zwischen Woertern? => Liste       my @vals = split " ", $val;       $paramp->{$key} = \@vals;   } else {       $paramp->{$key} = $val;   }   $$bufferp = ""; } ##########################################