Thread Datei lesen und in Hash schreiben? (45 answers)
Opened by Math55 at 2004-01-18 22:12

Patrick
 2004-01-20 13:48
#79273 #79273
User since
2004-01-07
56 Artikel
BenutzerIn
[default_avatar]
Bekomme irgendwie 'nen Systaxfehler!?

Quote
Syntaxfehler in Zeile 25 at test.pl line 49, <PARAM> line 25.


Hier mal der verwendete CODE
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl
use strict;
use warnings;

my %params;

open PARAM, "/homes/Patrick/Perl/Tk/Project.bak" or die $!;

my $buffer = '';
while (<PARAM>) {
  # 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 = "";
}

##########################################


Stell ich mich eventuell wieder zu dusselig an?

Trotzdem vielen Dank
Mfg
Paddy

Perl ist göttlich, die Kunst besteht darin Perl anwenden zu können.

View full thread Datei lesen und in Hash schreiben?