#!/usr/bin/perl use strict; use warnings; my %params; open PARAM, "param.dat" 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 = ""; } ############################################# _ _ END _ _ $VAR1 = {          'TOKDELIMITER' => ':Wd',          'ADDFILTER' => '',          'CROSSLIST' => '01_XY',          'TERMLIST' => [                          '02_IrgendeineListe',                          '03_IrgendeineListe'                        ],          'TOKMODIFIER' => ':WMN',          'TOKWORDS' => ':W',          'SPECTOKEN' => '',          'TOKSINGLE' => ':Wa',          'PHRASES' => [                         'IllegalSyn',                         'Question',                         'Sure',                         'NoPerm',                         'AsIs',                         'NewSentence',                         'NoNewSentence'                       ],          'TOKFILLER' => ':WF',          'OUTPUTNAME' => '',          'STARTLIST' => 'dateiname.ids',          'GENLIST' => 'Array2.genlist',          'TOKDESCRIPTION' => ':WND'        };