The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Config - Konfigurationsdatei in "Perl Object Notation"

BASE CLASS

Quiq::Hash

SYNOPSIS

  use Quiq::Config;
  
  my $cfg = Quiq::Config->new('/etc/myapp/test.conf');
  my $database = $cgf->get('database');

DESCRIPTION

Ein Objekt der Klasse Quiq::Config repräsentiert eine Menge von Attribut/Wert-Paaren, die in einer Perl-Datei definiert sind.

Beispiel für den Inhalt einer Konfigurationsdatei:

  host => 'localhost',
  datenbank => 'entw1',
  benutzer => ['sys','system']

Platzhalterersetzung

Im Wert einer Konfigurationsvariable können Platzhalter eingebettet sein. Ein solcher Platzhalter wird mit Prozentzeichen (%) begrenzt und beim Lese-Zugriff durch den Wert der betreffenden Konfigurationsvariable ersetzt. Beispiel:

  Konfigurationsdatei:
  
      VarDir => '/var/opt/myapp',
      SpoolDir => '%VarDir%/spool',
  
  Code:
  
      $val = $cfg->get('SpoolDir');
      =>
      '/var/opt/myapp/spool'

Besondere Platzhalter

%CWD%

Wird durch den Pfad des aktuellen Verzeichnisses ersetzt. Anwendungsfall: Testkonfiguration für Zugriff auf aktuelles Verzeichnis über einen Dienst wie FTP:

  test.conf
  ---------
  FtpUrl => 'user:passw@localhost:%CWD%'

METHODS

Konstruktor

new() - Instantiiere Konfigurationsobjekt

Synopsis

  [1] $cfg = $class->new(@files,@opt);
  [3] $cfg = $class->new($str);
  [4] $cfg = $class->new(\%keyVal);

Options

-create => $text

Falls die Konfigurationsdatei nicht existert, erzeuge sie mit dem Inhalt $text.

-secure => $bool (Default: 0)

Prüfe die Sicherheit der Datei. Wenn gesetzt, wird geprüft, ob die Datei nur für den Benutzer lesbar/schreibbar ist.

Description

[1] Instantiiere Konfigurationsobjekt aus einer der Dateien @files und liefere eine Referenz auf dieses Objekt zurück. Beginnt $file mit einer Tilde (~), wird sie zum Homedir des rufenden Users expandiert. Die erste gefundene Datei wird geöffnet.

[2] Als Parameter ist der Konfigurationscode als Zeichenkette der Form "$key => $val, ..." angegeben.

[3] Die Konfiguration ist inline durch Hash %keyVal angegeben.

Werte abfragen

get() - Liefere Konfigurationswerte

Synopsis

  $val = $cfg->get($key);
  @vals = $cfg->get(@keys);

Description

Liefere den Wert des Konfigurationsattributs $key bzw. die Werte der Konfigurationsattribute @keys.

Existiert ein Konfigurationsattribut nicht, wirft die Methode eine Exception.

try() - Liefere Konfigurationswerte ohne Exception

Synopsis

  $val = $cfg->try($key);
  @vals = $cfg->try(@keys);

Description

Liefere den Wert des Konfigurationsattributs $key bzw. die Werte der Konfigurationsattribute @keys. Existiert ein Konfigurationsattribut nicht, liefere undef.

VERSION

1.208

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2023 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.