Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Konfigurationsdateien

1 view
Skip to first unread message

Oliver 'ojo' Bedford

unread,
Oct 25, 2009, 4:33:41 PM10/25/09
to
Hi!

Was benutzt Ihr zum Schreiben und Einlesen von programm-spezifischen
Konfigurationsdateien?

Bei mir geht es im wesentlichen darum, eine Perl-Datenstruktur in eine
Konfigurationsdatei zu speichern.

Ich habe mir YAML angeschaut und auf den ersten Blick sah es ganz
gut aus. Dabei benutze ich nur die Funktionalität ähnlich Data::Dumper
um die Daten zu schreiben und wieder einzulesen. Mehr interessiert mich
zur Zeit nicht. Das Schreiben von Perl-Code ist wohl im Allgemeinen
keine gute Idee - daher YAML.

Jedoch ist es so, dass YAML von ihm geschriebene Dateien nicht
wieder einlesen kann (Problem scheinen einfache Einführungszeichen
zu sein), was ich nicht so überzeugend finde.

Oliver

Peter J. Holzer

unread,
Oct 31, 2009, 6:31:05 AM10/31/09
to
On 2009-10-25 20:33, Oliver 'ojo' Bedford <new...@web.de> wrote:
> Was benutzt Ihr zum Schreiben und Einlesen von programm-spezifischen
> Konfigurationsdateien?

Bunte Mischung: XML, YAML, Selbstgeschriebenes ... Je nachdem, was mir
beim Schreiben des Programms gerade sinnvoll erschien.


> Bei mir geht es im wesentlichen darum, eine Perl-Datenstruktur in eine
> Konfigurationsdatei zu speichern.
>
> Ich habe mir YAML angeschaut und auf den ersten Blick sah es ganz

> gut aus. Dabei benutze ich nur die Funktionalit�t �hnlich Data::Dumper


> um die Daten zu schreiben und wieder einzulesen. Mehr interessiert mich
> zur Zeit nicht. Das Schreiben von Perl-Code ist wohl im Allgemeinen
> keine gute Idee - daher YAML.
>
> Jedoch ist es so, dass YAML von ihm geschriebene Dateien nicht

> wieder einlesen kann (Problem scheinen einfache Einf�hrungszeichen
> zu sein), was ich nicht so �berzeugend finde.

Kann ich nicht nachvollziehen:


#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 1;

use YAML;

my $d1 = {
v1 => "a'b",
"O'Key" => "neve'mo'e",
};

my $s = Dump($d1);

my $d2 = Load($s);

is_deeply($d2, $d1);
__END__
1..1
ok 1

Allerdings gibt es mehrere Implementationen von YAML. Welche verwendest
Du denn? Ich habe hier nur die pure-perl Implementation, was f�r
Config-Files von ein paar Zeilen ausreichend ist. F�r gr��ere
Datenstrukturen w�rde ich vermutlich zu YAML::Syck greifen.

hp

Oliver 'ojo' Bedford

unread,
Nov 1, 2009, 6:33:20 AM11/1/09
to
Am Sat, 31 Oct 2009 11:31:05 +0100 schrieb Peter J. Holzer:


> Kann ich nicht nachvollziehen:
[...]

Vielleicht hiermit:

#!/usr/bin/perl

use strict;
use warnings;
use YAML;

my %myhash = ( "foo" =>
[
{
"First - erstes" => 1,
"Second - zweites" => 2,
"Third - drittes" => 3
}
]
);

my $s=Dump(%myhash);

print $s;

my %myhash2 = Load($s);

ojo@hermes:~/Dokumente/Projekte/tkscan2pdf$ ./testyaml.pl
--- foo
---
- 'First - erstes': 1
'Second - zweites': 2
'Third - drittes': 3
YAML Error: Inconsistent indentation level
Code: YAML_PARSE_ERR_INCONSISTENT_INDENTATION
Line: 4
Document: 2
at /usr/share/perl5/YAML.pm line 33

Abhilfe: Leerzeichen nach dem 'First -' löschen.

Oliver

Peter J. Holzer

unread,
Nov 1, 2009, 9:46:51 AM11/1/09
to
On 2009-11-01 11:33, Oliver 'ojo' Bedford <new...@web.de> wrote:
> Am Sat, 31 Oct 2009 11:31:05 +0100 schrieb Peter J. Holzer:
[Quoting erg嚙緯zt: Bitte gew嚙篁ne Dir an, relevante Teile des Vorpostings
zu quoten:]

>>> Jedoch ist es so, dass YAML von ihm geschriebene Dateien nicht
>>> wieder einlesen kann (Problem scheinen einfache Einf嚙篁rungszeichen
>>> zu sein), was ich nicht so 嚙箭erzeugend finde.

>> Kann ich nicht nachvollziehen:
> [...]
>
> Vielleicht hiermit:
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use YAML;
>
> my %myhash = ( "foo" =>
> [
> {
> "First - erstes" => 1,
> "Second - zweites" => 2,
> "Third - drittes" => 3
> }
> ]
> );

[...]
> Abhilfe: Leerzeichen nach dem 'First -' l嚙編chen.
>

Ja, damit geht's. Da Du aber geschrieben hast "Problem scheinen einfache
Einf嚙篁rungszeichen zu sein", hat mein Testcase einzelne
Anf嚙篁rungszeichen enthalten und nicht die problematische Sequenz "- ".

Nach ein bisschen mehr herumspielen: Das Problem scheint zu sein, dass
sich der YAML-Parser durch in Keys eingebettete Steuerungssequenzen
irritieren l嚙編st: "- " im Key geht also nicht (es sei denn, es ist der
letzte Key - so ganz klar ist mir nicht, wie das zustandekommt, aber den
Code selbst habe ich mir noch nicht angesehen). Das ist IMHO ein klarer
Bug, vermutlich der gleiche wie in
http://rt.cpan.org/Public/Bug/Display.html?id=42015

Hmm, 68 offene Bugs, darunter:

#29677: Metabug: RT queue too full

Schaut nicht sonderlich gut maintained aus ...

hp

Message has been deleted
0 new messages