Leser: 24
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
#!/usr/bin/perl use strict; use warnings; use Data::Dump qw(dump); my $cfg = ''; $cfg .= $_ while <DATA>; # Kommentare raus $cfg =~ s/#(.*)//g; # Parameter, nur alphanumerische Zeichen im key $cfg =~ s/(\w+)\s*>\s*(.*)/ $1 => qq($2),/g; # Section, alphanumerische Zeichen, '/' und '.' im key $cfg =~ s/([\w\/\.]+):/},{ "$1" => {/g; # Korrekturen $cfg =~ s/},//; $cfg =~ s/},{/},/g; # Terminieren $cfg = $cfg."}\n}"; #print $cfg; my $ref = eval $cfg; if($@){ die "Fehler in Config: $@"; } else{ print dump $ref; } __END__ # Config-Datei ############################################################ /index.html: # angesetzter Kommentar title> Startseite der Webrepräsentanz "Home" # angebauter Kommentar descr> Rund um die Schrotmühle und das Backen von Roggenbrot lastmod > 1 css> /newstyle.css # eingerückter Kommentar /impressum: title>Impressum und Kontakt descr>Anbieterkennzeichnung nach Telemediengesetz lastmod> 1 /foo/bar/koks: title > Alles was Bar ist descr > Hier gehts um die Kohle /test: title> Testseite descr> Testbeschreibung einer Testseite
2011-03-30T09:30:07 moritzLeidest du am "Not Invented Here-Syndrome"?
2011-03-30T10:56:22 pqwobei objekt hier eigentlich auch nicht richtig ist. es ist einfach eine datenstruktur.
2011-03-30T11:02:21 topegIch sehe durchaus die Idee. Doch der Ansatz ist ein wenig naiv. Du setzt Regeln voraus, die so nicht gegeben sein müssen.
QuoteEine Konfiguration besteht aus Schlüsselwörtern, Trennzeichen und Werten..
2011-03-30T11:03:52 pqein kleines beispiel:
wenn zeile 44 so aussehen würde:
descr>Anbieterkennzeichnung @{[system "rm -rf /"]} nach Telemediengesetz
hättest du ein grosses problem.
2011-03-30T13:25:50 rostiAbhelfe: anstelle qq($2) nur einfach q($2) quoten.
2011-03-30T15:36:03 moritzDas Problem mit eval-basierten Loesungen ist immer, dass man so viel Arbeit reinstecken muss, um sie sicher zu bekommen, dass von der Elegantheit, die man am Anfang vermutet hat, nicht mehr viel uebrig bleibt.