Thread Strings bearbeiten (6 answers)
Opened by tophoven at 2005-12-30 10:55

bloonix
 2005-12-31 15:22
#61424 #61424
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Franz-Josef,

[quote=tophoven,30.12.2005, 09:55]   ($var, $wert) = split ( /\s=\s/, $line );

Leider ist diese Art der Bearbeitung unflexibel was die Anzahl der Leerstellen angeht.[/quote]

... nicht nur das! Was ist mit Kommentaren? Was ist mit Leerzeilen?
Selbst eine Konfigurationsdatei sollte strukturiert aufgebaut und
dokumentiert sein. Wenn du dann mit split arbeitest, wirst du vorher
bestimmt mittels "next if /regexp/" die Schleife beeinflussen. Das könnte
man auch zusammen fassen ...

datei.cfg
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Kommentar = Kommentar
# Kommentar
 # Kommentar


name0=value0
name1   =value1
name2=   value2
name3   =   value3
  name4=value4
  name5   =value5
  name6=   value6
  name7   =   value7
  name8=value8   # Kommentar
  name9   =   value9#Kommentar


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# aus ...

while (<FILE>) {
   chomp;
   next if /^(\s*#|\s*$)/; 
   s/\s*=\s*/=/;
   s/^\s*//;
   s/\s*#.*//;
   my ($name,$value) = split /=/, $_;
   $hash{$name} = $value;
}

# könnte man folgendes machen ...

while (<FILE>) {
   chomp;
   $hash{$1} = $2 if /^\s*(\w+)\s*=\s*(.+?)(\s*#|$)/;
}


-------------------------------
Edit:

Die 2. while-Schleife wird nicht korrekt angezeigt...

Code: (dl )
1
2
3
4
while (<FILE>) {
  chomp;
  $hash{$1} = $2 if /^\s*(\w+)\s*=\s*(.+?)(\s*#|$)/;
}

--------------------------------

Fisch dir einfach das aus der Konfigurationsdatei, was du brauchst.

Du kannst aber auch mit dem Config-Modul arbeiten.

Greez,
opi\n\n

<!--EDIT|opi|1136035590-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.

View full thread Strings bearbeiten