Thread Idee: Transformation einer Datei in ein Objekt (17 answers)
Opened by rosti at 2011-03-30 11:06

rosti
 2011-03-30 11:06
#147111 #147111
User since
2011-03-19
3316 Artikel
BenutzerIn
[Homepage]
user image
Hallo,

mal unabhängig von vielen praktischen Perl-Modulen in denen es um das Einlesen/Parsen von Dateien geht; seit ein paar Tagen beflügelt mich die Idee, einen (vielleicht) neuen Weg zum Parsen einer Datei zu gehen. Die Idee ist, ausgehend von einer Datei, in der eine Struktur erkennbar ist, diese:

Ersetze bestimmte Zeichen so, dass danach der Inhalt evaluiert werden kann.

Beispiel zum Ausprobieren:
Code (perl): (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
#!/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


Was haltet Ihr davon?

View full thread Idee: Transformation einer Datei in ein Objekt